7

C ++プロジェクトのmakefileの一部は、diffコマンドを使用して、最近ビルドされたコードによって出力された2つのファイルを比較します。問題は、ファイルが異なる場合、スクリプトが失敗せず、続行する必要があることです。比較する必要のあるファイルは他にもあります。ビルドスクリプトを終了する前に、それらすべてを確認する必要があります。たとえば、このようなもの、

diff:   *
        diff $(TEST)/T4.board $(TEST)/T4.board
        diff $(TEST)/T4.board $(TEST)/sample.board

ファイルは同じであるため、最初の行では問題は発生しません。2行目は異なるファイルを比較し、違いが表示されると、

Makefile:102: recipe for target `diff' failed
make: *** [diff] Error 1

スクリプトが停止します。どうすれば続行できますか?

4

2 に答える 2

7

GNUはセクション5.5「エラー」で手動で述べているように、コマンドの前に-:を付けることで、コマンドの戻りステータスを無視できます。

diff:   *
    -diff $(TEST)/T4.board $(TEST)/T4.board
    -diff $(TEST)/T4.board $(TEST)/sample.board
于 2012-03-11T18:59:21.577 に答える
6

エラーを返さないようにレシピ全体を作成します。

diff:   *
    diff $(TEST)/T4.board $(TEST)/T4.board     || exit 0
    diff $(TEST)/T4.board $(TEST)/sample.board || exit 0

echo 'Files differ'の代わりに使用できますexit 0

于 2012-03-11T18:03:23.240 に答える