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

Mat*_*ner 161 makefile gnu-make

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

如果提供.ONESHELL,则仅检查配方的第一行是否有特殊前缀字符('@',' - '和'+').

这些前缀做了什么,它们在哪里提到?

Jon*_*ler 216

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

  • @ 抑制执行的命令的正常"回声".

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

  • +表示在正常执行命令时make -n' 在'(或'make -t'或'make -q')下执行此命令.另请参阅GNIX Make手册的POSIX规范make以及§9.3.

+表示法是的(POSIX标准化)概括事实上 由此命令行含有(非标准化的)机构${MAKE}$(MAKE)下被执行make -n.

(在GNU Make手册的第5.2节@讨论; 在§5.5中描述;以及§5.7.1中提到的使用.)-+


T.E*_*.D. 38

@防止命令行回显到控制台.您可以使用-s或全局执行此操作--keep-silent

-告诉make继续前进,即使命令由于某种原因失败了.您可以通过-i标志(或--ignore-errors)全局完成.

+在你问之前,我并不熟悉.由于靠近我可以告诉大家,它否定的效果-n,-t以及-q,所有这些基本上告诉做出不实际运行的命令.因此+,前面的一条线路无论如何都会被运行.

如果你阅读官方Gnu Make手册,它们都在第5章中提到.在我手册的旧版本中,这是关于"命令"的章节,但是术语du jour现在似乎是"食谱".