GNU默认情况下使用静音

时间:2014-06-03 00:03:28

标签: makefile

默认情况下是否可以在Makefile

中禁止命令回显

我知道在make模式下运行--silent将会执行此操作,并为每个命令添加@前缀。

我正在寻找一个命令或节我可以在里面包含Makefile,省去了用@乱丢所有内容或让用户手动静音的麻烦。

3 个答案:

答案 0 :(得分:27)

如果您定义目标.SILENT:,那么make将不会回显任何内容。通常最好保护定义,因此您可以轻松将其关闭:

ifndef VERBOSE
.SILENT:
endif

现在默认情况下,make将不会打印任何内容,但如果您运行make VERBOSE=1,则会打印。

请注意,尽管手册中的声明声称.SILENT已过时 - 如果保护得当,它通常比@更好(更有用和更灵活)。

.SILENT目标不应成为Makefile的第一个,否则make将默认使用它。

答案 1 :(得分:19)

您可以在--silent开头的MAKEFLAGS变量中添加Makefile

MAKEFLAGS += --silent

all:
    echo foobar

.PHONY: all

你将拥有:

$ make
foobar

答案 2 :(得分:7)

根据GNU Make's manual,您可以使用特殊目标.SILENT

请注意手册说

  

.SILENT基本上已经过时,因为'@'更灵活。

但似乎按预期工作。以下代码使所有目标静默。

.SILENT:

hoge:
    echo hoge

以下示例仅对hoge目标

进行静默
.SILENT: hoge

hoge:
    echo hoge

fuga:
    echo fuga