makefile - phony - Suprimir todas las salidas de salida excepto errores y advertencias.
makefile windows (4)
Tengo un makefile que crea un proyecto compuesto de muchos archivos que todos necesitan ser construidos.
Para complicar más las cosas, 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 suprimir todos los resultados, excepto los errores y las advertencias (¡para que pueda verlos cuando se ejecutan!)
¿Hay alguna manera de hacer esto?
"make -s" debería hacer lo que buscas un poco más pulcramente. No conozco una forma de forzarlo en los archivos make, pero el manual de GNU podría tener uno.
Si falla, puede comprobar el sistema de compilación del kernel de Linux, ya que parece ocultar automáticamente la salida estándar.
Espero que ayude, Paul
Al agregar una "@" al frente de un comando, la cadena de la línea de comandos se suprime, por ejemplo, desde
$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
a
$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c
@$(CC) -c $(CFLAGS) $< -o $@
tomará
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''
Dependiendo de cómo se reportan los "errores y advertencias" ...
make > /dev/null
Eso redireccionará todos los STDOUT (salida estándar) del comando make (y, por lo tanto, todos los subprocesos que genera) al interminable cubo de bits de la nada. Sin embargo, esto puede ser demasiado codicioso, ya que algunos programas usan STDOUT (y no STDERR) para informar advertencias.
No conozco una manera de cambiar globalmente la RESTAURACIÓN de todos los subprocesos desde el contexto del propio Makefile.
Feliz codificacion
También puede forzar la opción -s
como lo sugiere PaulW directamente en el Makefile. Solo agrega:
.SILENT: