4

私のビルドシステムは、1 回の呼び出しですべてのターゲットを使用して make を実行することを主張しているため、次のようになります。

make clean test clean build

2 番目の clean では、「`clean' に対して何もする必要はありません」とだけ表示されます。.PHONY ターゲットに追加されていますが。

それを回避する方法はありますか?

4

2 に答える 2

5

こいつを検証しました。これを試して:

test: ...
    ...

build: ...
    ...

clean%: ...
    ...

次に、次のように呼び出すことができます。

make clean1 test clean2 build

ターゲット名が違う限り、同じターゲットパターンにヒットしても再実行されるようです。

于 2013-02-10T00:21:10.847 に答える
5

ゆっ!これを行わないでください。ターゲットの暗黙的な順序付けに依存しないでください。使用すると完全に変わりますmake -j順序を明確にしてください。ビルド間で本当にクリーンアップする必要がある場合は、次のようになります。

.PHONY: everything
everything:
    ${MAKE} clean
    ${MAKE} test
    ${MAKE} clean
    ${MAKE} build

繰り返しになりますが、再帰的な make はやや臭いですが、この場合は最適なオプションです。

于 2013-02-11T13:58:19.517 に答える