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