gnuMake,如何强制假目标运行不止一次?

gcb*_*gcb 4 makefile build gnu-make

我的构建系统坚持在一次调用中对所有目标执行 make,所以我得到:

make clean test clean build

第二次清理只会说“没有为‘清理’做任何事情。” 即使它已添加到 .PHONY 目标。

有什么办法吗?

PQu*_*inn 5

我验证了这个。尝试这个:

test: ...
    ...

build: ...
    ...

clean%: ...
    ...
Run Code Online (Sandbox Code Playgroud)

然后你可以调用:

make clean1 test clean2 build
Run Code Online (Sandbox Code Playgroud)

似乎只要目标名称不同,即使命中相同的目标模式,它也会重新运行它。


bob*_*ogo 5

哎呀!千万不能做到这一点。不要依赖目标的隐式排序——当你使用make -j. 使您的订购明确。如果您真的必须在构建之间进行清理,那么类似于:

.PHONY: everything
everything:
    ${MAKE} clean
    ${MAKE} test
    ${MAKE} clean
    ${MAKE} build
Run Code Online (Sandbox Code Playgroud)

同样,递归 make 很臭,但在这种情况下是您的最佳选择。