【发布时间】:2021-06-17 07:28:09
【问题描述】:
假设我想使用以下 Makefile:
config:
echo "STR = YAY" > params
-include params
do_print: config
echo $(STR)
为此,我需要分两步运行make,首先make config 生成params 文件,然后我才能运行make do_print,它会打印YAY。
我正在寻找一种运行make do_print 将能够生成params 文件的方法,包括它并在“一次通过”中执行打印。
谢谢
【问题讨论】:
-
您是否尝试将您的目标命名为
params(实际上是什么)而不是config(不是什么)?正如您所写,make无法猜测config:规则构建params。 -
谢谢,我把它改成了
params config:,这样它就可以向后兼容,让用户可以像往常一样拥有它,而且它似乎可以解决问题。 -
请注意,如果它是动态生成的并且内容可能会发生变化,您应该添加
.PHONY: params以便在每次运行时重新生成它。否则make在文件存在时会很高兴,无论里面是什么。 -
@raspy 将其声明为假的并不像您期望的那样真正起作用:
params每次都会重新制作,但make不会重新启动并重新读取它。这种(未记录的)行为避免了无限循环。所以,如果你真的想每次都重新生成和重新阅读它,但只需要一次,最好使用 G.M.解决方案或类似的东西。