Makefile:コマンド実行結果を無視する方法
Makefile How Ignore Command Execution Result
Makefile:コマンド実行結果を無視する方法
例えば:
テキストファイルa.txtとb.txtがあり、それらの内容が異なると仮定します。diffツールを使用してa.txtとb.txtの違いを比較し、違いを後で分析します。diffが返されることがわかります。ファイルが同じでない場合はゼロ以外の値。
all: diff a.txt b.txt > a.diff echo 'done'
操作の結果は次のとおりです。
$ make diff a.txt b.txt > a.diff make: *** [all] Error 1
a.txtとb.txtに一貫性がないため、diffはゼロ以外の値を返し、makeツールは終了します。
- 最初のステップは、「-」演算子を使用してコマンドの結果を無視することです。
all: -diff a.txt b.txt > a.diff echo 'done'
結果:
$ make diff a.txt b.txt > a.diff make: [all] Error 1 (ignored) echo 'done' done
コマンドのエラーは無視されますが、画面には次の出力が表示されます。 make: [all] Error 1 (ignored)
非常に不協和音です。
- 非表示のコマンドを再試行してください
all: root@xxxxx a.txt b.txt > a.diff @echo 'done'
結果:
$ make make: [all] Error 1 (ignored) done
また、それは私たちが望む結果でもありません。
- 最後の方法は、シェルの機能を使用して、コマンドの戻り値を直接無視することです。
all: root@xxxxx a.txt b.txt > a.diff || true @echo 'done'
演算結果:
$ make done
これはOKです。