@, – 和+作为Make的配方行的前缀是什么?
在GNU Makefile手册中,它提到了这些前缀。
如果提供了.ONESHELL,那么只有配方的第一行将检查特殊的前缀字符('@',' – '和'+')。
这些前缀是做什么的,他们在哪里提到?
它们控制标记命令行make的行为:
-
@
抑制正在执行的命令的“回声”。 -
-
表示忽略被执行的命令的退出状态(通常情况下,非零退出状态将停止构build该部分)。 -
+
表示“在make -n
下执行这个命令”(当命令没有正常执行时)。
+
符号是这样一种机制的概括:在make -n
下执行包含${MAKE}
或$(MAKE)
的命令。
( @
在你所链接的手册的§5.2中讨论; -
在§5.5中描述; §5.7.1提到使用+
。)
@
防止命令行回显到控制台。 您可以使用-s
或--keep-silent
在全局范围内执行此操作
-
告诉make继续前进,即使命令由于某种原因失败。 您可以通过-i
标志(或--ignore-errors
)在全局执行此操作。
+
在你问起之前,我不熟悉。 就我所知,它抵消了-n
, -t
和-q
,所有这些基本上都说明不能实际运行命令。 所以在前面加一个+
就行了。
如果你阅读官方的Gnu Make手册,他们在第五章中都会提到。 在我手册的旧版“命令”一章中,但是术语“现在似乎是”食谱“。