作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(我的问题与 Force Makefile to execute script before building targets 不同)
我有以下Makefile:
.PHONY: dump_params all
all: tmpA
tmpA: tmpB tmpC dump_params
cat $(filter tmp%,$^) > $@
tmpB: dump_params
touch $@
tmpC: dump_params
touch $@
dump_params:
echo "Makefile was run." >> config.txt
对于目标 dump_params,我想在每次调用新目标时创建/附加一个文件(以跟踪所使用工具的版本)。但是,当我打电话时
make tmpA
所有目标都是从头开始构建的
$ make tmpA
echo "Makefile was run " >> config.txt
touch tmpB
touch tmpC
cat tmpB tmpC > tmpA
$ make tmpA
echo "Makefile was run." >> config.txt
touch tmpB
touch tmpC
cat tmpB tmpC > tmpA
如何防止 Make 由于该目标“dump_params”而重新构建所有内容?还有另一种方法来创建这种日志文件吗?
编辑:我正在使用并行 make(选项 -j)。不能在语句部分定义宏来创建文件。
最佳答案
.PHONY: dump_params all
all: tmpA
tmpA: tmpB tmpC | dump_params
cat $(filter tmp%,$^) > $@
tmpB: | dump_params
touch $@
tmpC: | dump_params
touch $@
dump_params:
echo "Makefile was run." >> config.txt
关于Makefile:在构建任何目标之前创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684479/
我是一名优秀的程序员,十分优秀!