应包含“-rm”或“rm -f”

应包含“-rm”或“rm -f”

从标题来看问题应该很清楚,但我还是想说一下。

哪个更好,或者有没有更好的选择:

thing:
    rm -f a.file b.file
    doTheMake

thing:
    -rm a.file b.file
    doTheMake

我希望始终 在运行之前删除a.file它。b.filedoTheMake

答案1

这取决于您的意图。如果没有该-f标志,如果文件不存在,您将得到一条错误消息和错误返回值。Makefile 在错误后不会继续(除非您已将其配置为这样做)。如果文件可能存在也可能不存在,并且您想在所有情况下都删除它,-f则是正确的行为。如果文件应该因为工具链中的早期步骤而存在,并且您想在此时删除它(即此时它不存在是一个错误),请不要使用-f

现在,如果您在行前加上-命令,则会正常执行,但会忽略其错误并继续处理。

-f大多数命令一开始就没有标志,这就是-前缀存在的原因。但是rm确实存在。在这种情况下,您将根据是否希望 rm 抱怨文件不存在来使用前缀-还是-f标志。此时这可能是风格和偏好的问题,但请考虑您的意图、您要删除的文件等。我个人更喜欢在-任何地方都没有任何前缀的 makefile,因为我认为它们更像是一种 hack,我宁愿使用它们rm -f,但经过这个解释,您可以自行决定。

相关内容