如何隐藏Makefile的打印信息?

时间:2014-02-12 20:15:05

标签: makefile

当Makefile执行某些任务时,il会在控制台中打印很多信息,我们可以选择隐藏它们吗?当我有很多.o来生成时,这些信息会太多而无法看到,如果我们不读它们就没有意义。

以下代码

$(obj)environment.o: $(src)environment.c
                      $(CC) $(AFLAGS) -Wa, --no-warn \
                             -DENV_CRC=$(shell $(obj)../tools/envcrc) \
                             -c -o $@ $(src)environment.c

将打印重要信息,如

arm-linux-gcc -g  -Os   -fno-strict-aliasing  -fno-common -ffixed-r8 -msoft-float  
-D__KERNEL__ -DTEXT_BASE=0x01000000  
-I/home/mingzhao/Documents/bootloader/u-boot-1.2.0/include 
-fno-builtin -ffreestanding -nostdinc -isystem  
/home/mingzhao/Documents/bootloader/arm/4.3.2/bin/../lib/
gcc/arm-none-linux-gnueabi/4.3.2/include -pipe  -DCONFIG_ARM 
-D__ARM__ -march=armv4 -mabi=apcs-gnu -Wall -Wstrict-prototypes  
-c -o environment.o environment.c

4 个答案:

答案 0 :(得分:0)

您可以使用选项make --silent来禁止所有目标的输出。如果要抑制某些命令的输出,可以在@

前加上前缀

答案 1 :(得分:0)

我喜欢这样的事情:

$(obj)environment.o: $(src)environment.c
    @echo building $@
    @$(CC) $(AFLAGS) -Wa, --no-warn \
      -DENV_CRC=$(shell $(obj)../tools/envcrc) \
      -c -o $@ $(src)environment.c

@echo ...给出最小状态消息,$(CC)前面的'@'抑制标准输出(但仍然允许错误消息)。

答案 2 :(得分:0)

您可以使用以下语法:@$(CC) $(AFLAGS) -Wa, --no-warn \...

答案 3 :(得分:0)

处理此问题(IMO)的“正确”方法是将其添加到您的makefile中:

$(VERBOSE).SILENT:

然后在您的规则中希望打印命令(例如,echo语句,如下面的Beta答案中所示),在其前面添加@ 。对于所有其他命令,不要在其前面添加@

这样做是默认情况下启用“静默”模式(因为未设置变量VERBOSE,因此这将解析为.SILENT伪目标。

然后,如果您想要查看所有内容,请添加VERBOSE=1(实际上您可以将其设置为任何非空值,如果您愿意,则设置为VERBOSE=true)。当你这样做时它会关闭“静音”模式,因为上面的行扩展到1.SILENT:(或true.SILENT:或其他什么),这是毫无意义的。