Подавлять все выходные данные, за исключением ошибок и предупреждений
У меня есть makefile, который создает проект, состоящий из множества файлов, которые все нужно построить.
Чтобы усложнить ситуацию, у меня есть ряд включенных каталогов в каждом вызове gcc (поэтому каждый вызов gcc длится долго в командной строке).
Я хотел бы отключить все выходные данные, кроме ошибок и предупреждений (так что я действительно могу их увидеть, когда make работает!)
Есть ли способ сделать это?
Ответы
Ответ 1
В зависимости от того, как сообщаются "ошибки и предупреждения"...
make > /dev/null
Это приведет к перенаправлению всех STDOUT (стандартного вывода) из команды make (и, следовательно, всех подпроцессов, которые она порождает) в бесконечное ведомое ведро ничтожества. Это может быть слишком жадным, поскольку некоторые программы используют STDOUT (а не STDERR) для сообщения предупреждений.
Я не знаю, как глобально изменить STDOUT всех подпроцессов из контекста самого Makefile.
Счастливое кодирование.
Ответ 2
"make -s" должен делать то, что вы после немного более аккуратно. Я не знаю, как это сделать на make файлах, но в руководстве GNU может быть один.
В противном случае вы можете проверить систему сборки ядра Linux, так как это автоматически спрячет stdout.
Надеюсь, что это поможет,
Пол
Ответ 3
Добавив "@" в начало команды, строка командной строки будет подавлена
например
от
$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c
$(CC) -c $(CFLAGS) $< -o [email protected]
к
$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c
@$(CC) -c $(CFLAGS) $< -o [email protected]
возьмет
make[1]: Entering directory `.../libraries/libgcdc/build'
/home/crowe/arm-tools/gcc-arm-none-eabi-4_6-2012q2/bin/arm-none-eabi-gcc -c -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Werror-implicit-function-declaration -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -g -O0 -D DEBUG -I.. -I../include -I../../libchip_sam3s -I../../libboard_arm_demo -I../../libboard_generic -I../../libusb/include -Dsam3s4 -DTRACE_LEVEL=5 -Dprintf=iprintf ../source/hid_callbacks.c -o debug_sam3s_svn2/hid_callbacks.o
make[1]: Leaving directory ` .../libraries/libgcdc/build'
to
make[1]: Entering directory `.../libraries/libgcdc/build'
make[1]: Leaving directory `.../libraries/libgcdc/build'
Ответ 4
Вы также можете принудительно установить параметр -s
, как это было предложено PaulW непосредственно в Makefile. Просто добавьте:
.SILENT: