我的构建系统坚持在一次调用中对所有目标执行 make,所以我得到:
make clean test clean build
第二次清理只会说“‘清理’没有什么可做的。” 即使它已添加到 .PHONY 目标中。
有什么办法吗?
我验证了这一点。试试这个:
test: ...
...
build: ...
...
clean%: ...
...
然后你可以调用:
make clean1 test clean2 build
似乎只要目标名称不同,即使它击中相同的目标模式,它也会重新运行它。
呸!不要这样做。不要依赖于目标的隐式排序——当你使用make -j
. 使您的订购明确。如果您真的必须在构建之间进行清理,那么类似:
.PHONY: everything
everything:
${MAKE} clean
${MAKE} test
${MAKE} clean
${MAKE} build
同样,递归 make 很臭,但在这种情况下是您的最佳选择。