GCC и makefile: показывать только ошибки и предупреждения
У меня есть makefile, который компилирует каждый .c файл в моем проекте. Для каждого файла я получаю всю команду компиляции, распечатанную в оболочку, со всеми опциями и флагами. Это пример вывода для одного файла:
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 -include./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
Проблема заключается в том, что различные предупреждения теряются во всем этом беспорядке командных выходов. Есть ли способ распечатать только предупреждения и ошибки (не исходную команду)?
Ответы
Ответ 1
Просто добавьте команду символ @
.
Если вы полагаетесь на встроенные неявные правила, вам нужно будет сделать их явными или, в вашем конкретном случае, вы можете использовать:
.SILENT: *.o
для блокировки всех команд, используемых для создания целей %.o
.
Ответ 2
Выполните make
с помощью опции -s
. На странице .
-s, --silent, --quiet
Silent operation; do not print the commands as they are executed.
Ответ 3
Вы всегда можете фильтровать весь вывод из stdout
, который должен оставить вас со всеми ошибками на stderr
:
make 1>/dev/null
Ответ 4
Используйте @
перед командой, чтобы скрыть его:
rule1:
@gcc someting