@,-和+作为Make中配方行的前缀是什么?


172

在GNU Makefile手册中,提到了这些前缀。

如果提供了.ONESHELL,则仅检查配方的第一行以查找特殊的前缀字符(“ @”,“-”和“ +”)。

这些前缀有什么作用,在何处提及?

Answers:


235

它们控制带标记的命令行的make行为:

  • @ 禁止执行命令的正常“回声”。

  • - 表示忽略执行命令的退出状态(通常,非零退出状态将停止构建的那部分)。

  • +表示在正常情况下不执行命令时,make -n“ 在”(或“ make -t”或“ make -q”)下执行此命令。另请参见POSIX规范make和GNU Make手册的第9.3节

+符号是事实 (非标准化)机制的(POSIX标准化)概括,其中包含${MAKE}$(MAKE)在之下执行的命令行make -n

(在GNU Make手册的第5.2节中进行了@讨论;在第5.5 中进行了描述;在第5.7.1 节中提到了使用。)-+


41

@防止命令行回显到控制台。您可以使用-s或在全局范围内进行操作--keep-silent

-告诉make继续前进,即使命令由于某种原因失败。您可以通过-i标志(或--ignore-errors)在全局范围内进行操作。

+在你问之前我并不熟悉。由于靠近我可以告诉大家,它否定的效果-n-t以及-q,所有这些基本上告诉make不实际运行的命令。因此+,前面带有a的生产线仍然会运行。

如果您阅读了官方的Gnu Make手册,则它们将在第5章中提到。在我的手册的旧版本中,这是“命令”一章的内容,但du jour现在似乎是“食谱”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.