rm -rf与-rm -rf

时间:2010-06-07 12:32:20

标签: makefile

在Makefile中,我读到:

-rm -rf(而不是rm -rf)。第一个“ - ”在Makefile的行开头是什么意思?

1 个答案:

答案 0 :(得分:55)

这意味着make本身会忽略来自rm的任何错误代码。

makefile中,如果任何命令失败,则make进程本身会中断处理。通过在命令前添加-作为前缀,您可以通知make无论命令结果如何,它都应该继续处理规则。

例如,makefile规则:

clean:
    rm *.o
    rm *.a
如果*.a返回错误(例如,如果没有要删除的rm *.o文件),

删除*.o文件。使用:

clean:
    -rm *.o
    -rm *.a

将解决该特定问题。


除了:虽然在您的特定情况下可能不需要它(因为-f标志似乎阻止rm在文件不存在时返回错误),在makefile - rm中明确标记该行可能会在某些情况下返回其他错误仍然是一种好习惯,这会使您的意图明确。