我想依赖只运行一次的虚拟目标。
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
以触发重新运行c
和d
。如果a
存在,我希望能够多次运行b
而不会触发长时间运行的任务。
我有很多任务,例如c
和d
,所以我想避免每个单独的任务触摸文件,我不希望文件系统混乱不必要的文件。< / p>
答案 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不存在时执行,