Подтвердить что ты не робот

Подавлять все выходные данные, за исключением ошибок и предупреждений

У меня есть makefile, который создает проект, состоящий из множества файлов, которые все нужно построить.

Чтобы усложнить ситуацию, у меня есть ряд включенных каталогов в каждом вызове gcc (поэтому каждый вызов gcc длится долго в командной строке).

Я хотел бы отключить все выходные данные, кроме ошибок и предупреждений (так что я действительно могу их увидеть, когда make работает!)

Есть ли способ сделать это?

4b9b3361

Ответ 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: