应该包含 `-rm` 或 `rm -f`

Pål*_* GD 4 makefile

这个问题应该从标题中清楚,但这里是。

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

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

thing:
    -rm a.file b.file
    doTheMake
Run Code Online (Sandbox Code Playgroud)

我想总是删除 a.fileb.file之前doTheMake运行。

Mah*_*dsi 6

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

现在,如果您在一行中添加前缀,-该命令将正常执行,但其错误将被忽略并继续处理。

大多数命令一开始就没有-f标志,这就是-前缀存在的原因。但rm确实如此。在这种情况下,您将根据是否希望 rm 抱怨文件不存在来使用-前缀与-f标志。在这一点上,这可能是风格和偏好的问题,但请考虑您的意图,您要删除的文件等。我个人更喜欢在任何-地方都没有任何前缀的 makefile,因为我认为它们更像是一种黑客行为,并且宁愿使用rm -f替代,但这样的解释后,这是你的电话。