14

我有一个编译项目中每个 .c 文件的 makefile。对于每个文件,我都会将整个编译命令打印到 shell 中,其中包含所有选项和标志。这是一个文件的示例输出:

arm-none-eabi-gcc -c -mcpu=cortex-m3 -O0 -dM -g -gdwarf-2 -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=src/sim/sim_configuration.lst -包括 ./lib/stm32core/stm32f2xx_conf.h -I 。-I./lib/ARMStandardLibrary -I./lib/LwIP -I./lib/LwIP/src/include -I./lib/LwIP/src/include -I./lib/LwIP/src/include/ipv4 - I./lib/LwIP/src/include/ipv6 -I./lib/FatFS -I./lib/stm32core -I./src -I./src/sim -I./src/sd -I./src /tftp src/sim/sim_configuration.c -o src/sim/sim_configuration.o

问题是各种警告在这整个混乱的命令输出中丢失了。有没有办法打印出现的警告和错误(不是原始命令)?

4

4 回答 4

22

make使用-s选项执行。从手册页

-s, --silent, --quiet
    Silent operation; do not print the commands as they are executed.
于 2012-08-14T16:18:03.347 回答
6

只需在命令前面加上@符号

如果您依赖内置的隐式规则,则必须使它们显式,或者在您的特定情况下,您可以使用:

.SILENT: *.o

用于使用于构建%.o目标的所有命令静音。

于 2012-08-14T16:15:47.740 回答
5

您始终可以过滤来自 的所有输出stdout,这应该会给您留下所有错误stderr

make 1>/dev/null
于 2012-08-14T16:20:22.193 回答
4

在命令之前使用@来隐藏它:

rule1:
  @gcc someting
于 2012-08-14T16:16:12.260 回答