想象一下,我想在我构建的任何可执行文件上放置一个特殊的印章(不要担心该图章的内容)。 我有一个规则来创建邮票本身。 但我不希望重新创建印章,除非 makefile 的其余部分会做一些事情:
它必须与 make -j(并行)一起工作。 这是一个伪代码生成文件(它不起作用):
all: a b
.PHONY: buildstamp
buildstamp: all
date > buildstamp.txt
a: a.cpp
cp buildstamp.txt a
b: b.cpp
cp buildstamp.txt b
同样,buildstamp 应该只在任何目标更新时运行,即使这样,它也应该只运行一次(而不是每个目标运行一次)。 并且它必须在这些目标中的任何一个明显运行之前完成(否则 buildstamp.txt可能会产生部分结果。
谢谢!
.PHONY: all
all: a b
a b: %: %.cpp buildstamp.txt
cp buildstamp.txt $@
buildstamp.txt: a.cpp b.cpp
date > buildstamp.txt