【发布时间】:2021-12-12 20:22:46
【问题描述】:
我有一个 Makefile,其中有 a: b 和 b: c。当我在 b 存在的情况下运行 make a 时,我希望即使 c 不存在,Make 也会单独离开 b。但似乎 GNU Make 一路向上,并从有问题的最上游父级开始重新制作所有内容。
有一个标志 --always-make 导致 Make 总是重新制作所有先决条件,即使不需要。不幸的是,似乎没有 --never-make 标志永远不会重新制定任何先决条件,即使需要。有没有一种通用的方法可以让我获得这种行为?
一些看似不合适的可能解决方案:
-
touch逐个处理每个文件很乏味,并且在丢失文件的情况下,会导致空的“假”文件,我觉得这太hacky了 - 注释掉
a: #b中的 prereq 会破坏像touch $<这样的变量。 - 注释掉
b:的规则是可行的,但通常文件中散落着很多b,所以注释很多,也很乏味
【问题讨论】:
-
不,没有可供您使用的 make 选项。你将不得不修改你的 Makefile,即使它很乏味,或者
touch --date=very-long-time-ago c对于所有c先决条件。
标签: makefile