rm -rf与-rm -rf

use*_*607 31 makefile

在Makefile中,我读到:

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

pax*_*blo 55

这意味着它make本身将忽略任何错误代码rm.

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

例如,makefile规则:

clean:
    rm *.o
    rm *.a
Run Code Online (Sandbox Code Playgroud)

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

clean:
    -rm *.o
    -rm *.a
Run Code Online (Sandbox Code Playgroud)

将解决这个特殊问题.


旁白:虽然它可能不是你的具体情况需要(因为-f标志出现,以防止rm从返回时,该文件不存在的错误),它仍然是很好的做法,在明确标注线makefile- rm可能返回其他在某些情况下的错误和它使你的意图清晰.

  • @ user255607(如果这是你的真名).将其标记为已回答(答案旁边的绿色勾号) (2认同)