在GNU Makefile手册中,它提到这些前缀。
如果提供了. oneshell,则只检查recipe的第一行是否有特殊的前缀字符(' @ ',' - '和' + ')。
这些前缀的作用是什么?它们在哪里被提到?
@防止命令行回显到控制台。你可以全局使用-s或--keep-silent
@
-s
--keep-silent
-告诉make继续执行,即使该命令由于某种原因失败。您可以通过-i标志(或--ignore-errors)全局地执行此操作。
-
-i
--ignore-errors
在你问之前,我不熟悉。据我所知,它否定了-n, -t和-q的效果,所有这些基本上都告诉make不实际运行命令。因此,前面带有+的行无论如何都会被运行。
-n
-t
-q
+
如果你阅读官方的Gnu Make手册,它们都在第五章中提到。在我的旧手册中,有一章是关于“命令”的,但现在流行的术语似乎是“食谱”。
它们控制标记命令行的make行为:
@抑制所执行命令的正常“回声”。
-表示忽略所执行命令的退出状态(通常,非零退出状态将停止构建的这一部分)。
+表示当命令不正常执行时,“在make -n下执行此命令”(或“make -t”或“make -q”)。参见POSIX规范中的make和§9.3的GNU Make手册。
make -n
make
+符号是事实上的(非标准化)机制的(posix标准化)泛化,其中包含${MAKE}或$(MAKE)的命令行在make -n下执行。
${MAKE}
$(MAKE)
(@在GNU Make手册的§5.2中讨论;-在§5.5中描述;而§5.7.1提到了+的使用。)