【问题标题】:GNU make interdependent predependenciesGNU 建立相互依赖的预依赖关系
【发布时间】:2014-10-10 23:15:23
【问题描述】:

我正在尝试编写具有相互关联的预依赖项的 make 规则。

a: b $(FILES)

b: $(FILE_1)
  $(eval FILES := some_function_using_file($(FILE_1)))

$(FILES):
  do something ...

基本上,我需要 $(FILE_1) 来获取 $(FILES)。当 make 第一次读取文件时,下面的这条规则不存在,因为 $(FILES) 最初没有定义,而是动态评估的。

$(FILES):
  do something ...

有没有办法让它工作?我想动态创建 $(FILES) 然后运行它的规则。

【问题讨论】:

    标签: makefile dependencies gnu


    【解决方案1】:

    在任何目标运行之前都会对目标进行评估。最好的办法是在此之前生成列表。

    FILES = $(shell ls) new.txt
    
    all: $(FILES)
    
    $(FILES):
      echo $@
    

    如果你真的很绝望,你可以从 makefile 中生成另一个 makefile 并调用另一个 make 副本。

    【讨论】:

    • 或生成makefile的include
    • Include 在制定任何目标之前会起作用,但我认为您不能像在 OPs 示例中那样在目标中做到这一点。
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2013-08-04
    • 2011-06-26
    • 2015-11-02
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多