如何避免多次运行Virtual Makefile目标?

时间:2012-05-10 13:09:24

标签: makefile

我想依赖只运行一次的虚拟目标。

Makefile与我到目前为止所做的尝试:

a: b

b: c d
    touch b

c:
    # time consuming task that only needs to run once

d:
    # time consuming task that only needs to run once

b已经存在时,有没有办法停止依赖链?我可以通过手动清理来摆脱b以触发重新运行cd。如果a存在,我希望能够多次运行b而不会触发长时间运行的任务。

我有很多任务,例如cd,所以我想避免每个单独的任务触摸文件,我不希望文件系统混乱不必要的文件。< / p>

1 个答案:

答案 0 :(得分:3)

您可以将Makefile编写为:

a: b

b c:
    # time consuming task that only needs to run once
    touch b

make c将无条件地召唤您的任务。

make b仅在文件b不存在时执行您的任务。

make a取决于b,因此任务仅在b不存在时执行,