GNU Makeは失敗したコマンドを無視しません

GNU Makeは失敗したコマンドを無視しません

ディレクトリが存在する場合は削除する必要があるというルールを作成しました。

.PHONY: distclean
distclean:
    -rmdir release

make distclean印刷:

rmdir release
rmdir: failed to remove ‘release’: No such file or directory
test.mak:3: recipe for target 'distclean' failed
make: [distclean] Error 1 (ignored)

-このフラグが原因でGNU Makeはこのエラーを無視する必要はありませんか?

私はGNU Make 4.0を使用しています。

ベストアンサー1

Makeはエラーを無視します。

make: [distclean] Error 1 (ignored)

それでもエラーメッセージが表示されますが、distcleanターゲットに別のルールを追加した場合は、rmdir失敗にもかかわらず処理を続行する必要があります。

もっと詳しく:

rmdir release

これにより、makeすぐに実行されるコマンドが印刷されます。

rmdir: failed to remove ‘release’: No such file or directory

存在しないrmdirため、エラーメッセージが表示されます。これを削除するには、コマンドに追加するか、release完全にミュートすることができます。2> /dev/null>& /dev/nullrmdir

test.mak:3: recipe for target 'distclean' failed

rmdirゼロ以外の終了コードで終了するため、makeエラーメッセージが出力されます。これを削除するには、|| trueコマンドに追加する必要があります(すべての場合にゼロ終了コードで終了するように)。

make: [distclean] Error 1 (ignored)

最後にコマンドの前に付いているので、-エラーは無視され続けますmake

おすすめ記事