![GNU Make 不会忽略失败的命令](https://linux22.com/image/67917/GNU%20Make%20%E4%B8%8D%E4%BC%9A%E5%BF%BD%E7%95%A5%E5%A4%B1%E8%B4%A5%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我写了一条规则,如果目录存在,则应将其删除:
.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/null
静音rmdir
)。
test.mak:3: recipe for target 'distclean' failed
rmdir
以非零退出代码退出,因此make
打印一条错误消息。要删除它,您需要添加|| true
到命令中(以便在所有情况下它都以零退出代码退出)。
make: [distclean] Error 1 (ignored)
最后,由于该命令以 为前缀-
,因此该错误将被忽略并make
继续。