2010-06-07 115 views
27

在Makefile中,我读到:rm -rf与-rm -rf

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

+2

制作是一种编程语言,而不是只是一个工具。 Makefiles是程序!不要说这属于超级用户! – 2010-06-07 13:19:25

+0

仅供参考,'\ rm'也可以用来代替'-rm'。 – Dennis 2013-05-04 03:57:26

+0

还要注意让预定义'$(RM)',你可能想使用,最大的可移植性。 – 2017-07-28 15:12:56

回答

49

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

makefile,如果任何命令,则失败make过程本身中止处理。通过与-前缀你的命令,你通知make,它应该继续处理规则不管命令的结果。

例如,makefile文件规则:

clean: 
    rm *.o 
    rm *.a 

删除*.a文件,如果rm *.o返回一个错误(如果,例如,没有任何*.o要删除的文件)。使用:

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

将解决该特定问题。


旁白:虽然它可能不是你的具体情况需要(因为-f标记看起来防止rm从返回时,该文件不存在的错误),它仍然是很好的做法,明确标示线在makefile - rm可能会返回在某些情况下其他错误,它让你的意图明确。

+0

清晰高效!谢谢。 – user255607 2010-06-07 12:43:06

+2

@ user255607(如果这是你的真名)。将其标记为已回答(答案旁边的绿色勾号) – Ben 2010-11-04 03:00:36

相关问题