【问题标题】:rm -rf versus -rm -rfrm -rf 与 -rm -rf
【发布时间】:2011-02-28 16:31:19
【问题描述】:

在 Makefile 中,我读到:

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

【问题讨论】:

  • Make 是一种编程语言,而不仅仅是一种实用程序。 Makefile 是程序!不要说这是超级用户的!
  • 仅供参考,\rm 也可以用来代替-rm
  • 另请注意,Make 预定义了您可能想要使用的 $(RM),以实现最大的可移植性。

标签: makefile


【解决方案1】:

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

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

例如makefile规则:

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

不会删除*.a 文件。使用:

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

将解决该特定问题。


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

【讨论】:

  • @user255607(如果那是您的真实姓名)。然后将其标记为已回答(答案旁边的绿色勾号)
猜你喜欢
  • 2021-04-09
  • 1970-01-01
  • 2013-01-10
  • 2012-05-13
  • 2014-06-26
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多