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

如果提供了. oneshell,则只检查recipe的第一行是否有特殊的前缀字符(' @ ',' - '和' + ')。

这些前缀的作用是什么?它们在哪里被提到?


@防止命令行回显到控制台。你可以用-s或——keep-silent来全局执行

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

在你问我之前我不熟悉的东西。就我所知,它否定了-n、-t和-q的效果,所有这些基本上都告诉make不要实际运行这些命令。所以前面有+的行还是会被运行。

如果你阅读了官方的Gnu Make手册,它们都在第5章中提到了。在我的旧手册中,有一章是关于“命令”的,但现在流行的术语似乎是“食谱”。


它们控制标记命令行的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提到了+的使用。)