私のビルドシステムは、1 回の呼び出しですべてのターゲットを使用して make を実行することを主張しているため、次のようになります。
make clean test clean build
2 番目の clean では、「`clean' に対して何もする必要はありません」とだけ表示されます。.PHONY ターゲットに追加されていますが。
それを回避する方法はありますか?
こいつを検証しました。これを試して:
test: ...
...
build: ...
...
clean%: ...
...
次に、次のように呼び出すことができます。
make clean1 test clean2 build
ターゲット名が違う限り、同じターゲットパターンにヒットしても再実行されるようです。
ゆっ!これを行わないでください。ターゲットの暗黙的な順序付けに依存しないでください。使用すると完全に変わりますmake -j
。順序を明確にしてください。ビルド間で本当にクリーンアップする必要がある場合は、次のようになります。
.PHONY: everything
everything:
${MAKE} clean
${MAKE} test
${MAKE} clean
${MAKE} build
繰り返しになりますが、再帰的な make はやや臭いですが、この場合は最適なオプションです。