2011-08-31 16 views
25

Tengo un archivo MAKE que crea un proyecto compuesto por muchos archivos que todos deben crearse.Suprimir todos los resultados de salida, excepto errores y advertencias

Para hacer las cosas más complicadas, tengo una serie de directorios incluidos en cada llamada a gcc (por lo que cada llamada a gcc parece larga en la línea de comandos).

me gustaría para suprimir todas las salidas a excepción de errores y avisos (por lo que en realidad puede verlos cuando haga carreras!)

¿Hay alguna manera de hacer esto?

+1

@pst usted es el hombre! Publique como respuesta para que pueda marcar como aceptado. Por cierto ... ¿sabes si hay alguna forma de que pueda hacer esto desde el archivo MAKE para que el comando 'make' siga siendo sencillo? – Steve

Respuesta

10

Dependiendo de cómo "los errores y avisos" se informan ...

make > /dev/null 

que redirigirá todas STDOUT (salida estándar) a partir de la ejecución de make (todos y por lo tanto subprocesos que genera) al infinito poco cubo de la nada. Sin embargo, esto puede ser demasiado codicioso, ya que algunos programas usan STDOUT (y no STDERR) para informar advertencias.

No conozco ninguna manera de cambiar globalmente STDOUT de todos los subprocesos desde el propio Makefile.

Happy coding.

+0

¡Gracias! Eso es justo lo que necesitaba. (Funciona perfectamente con gcc) – Steve

23

"make -s" debe hacer lo que está buscando con más cuidado. No sé de una manera de forzarlo en los makefiles, pero el manual de GNU podría tener uno.

En caso de que no se pueda verificar el sistema de compilación del kernel de Linux, ya que parece ocultar automáticamente stdout.

Espero que ayude, Paul

+0

Excelente, exactamente lo que necesitaba –

19

Mediante la adición de una "@" al frente de un comando, la cadena de línea de comandos, por ejemplo, se suprime de

$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c 
     $(CC) -c $(CFLAGS) $< -o [email protected] 

a

$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c 
     @$(CC) -c $(CFLAGS) $< -o [email protected] 

se llevará a

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' 

a

make[1]: Entering directory `.../libraries/libgcdc/build' 
make[1]: Leaving directory `.../libraries/libgcdc/build' 
12

También puede forzar la opción -s según lo sugerido por PaulW directl y en el Makefile. Solo agregue:

.SILENT: 
Cuestiones relacionadas