Gnu-Make

GNU Make 不會忽略失敗的命令

  • June 28, 2015

我寫了一個規則,如果目錄存在,則應將其刪除:

.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。

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/null靜音rmdir)。

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

rmdir以非零退出程式碼退出,因此make列印錯誤消息。要刪除它,您將添加|| true到命令中(以便它在所有情況下都以零退出程式碼退出)。

make: [distclean] Error 1 (ignored)

最後,由於命令以 為前綴-,因此錯誤被忽略並make繼續。

引用自:https://unix.stackexchange.com/questions/212725