@, – 和+作为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手册,他们在第五章中都会提到。 在我手册的旧版“命令”一章中,但是术语“现在似乎是”食谱“。