当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
答案 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:
或其他什么),这是毫无意义的。