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

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

rmdir以非零退出代码退出,因此make打印一条错误消息。要删除它,您需要添加|| true到命令中(以便在所有情况下它都以零退出代码退出)。

make: [distclean] Error 1 (ignored)

最后,由于该命令以 为前缀-,因此该错误将被忽略并make继续。

相关内容