Tengo un archivo MAKE que compila todos los archivos .c de mi proyecto. Para cada archivo, obtengo el comando de compilación completo impreso en el shell, con todas las opciones y banderas. Esta es la salida de ejemplo para un archivo:
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
El problema es que varias advertencias se pierden dentro de todo este lío de salidas de comandos. ¿Hay alguna manera de solo imprimir las advertencias y errores que aparecen (no el comando original)?
Ejecutar make
con el -s
opción. Desde el página man.
-s, --silent, --quiet
Silent operation; do not print the commands as they are executed.
mrucci
Simplemente anteponga el comando con el @
símbolo.
si confías en reglas implícitas incorporadastendrás que hacerlos explícitos o, en tu caso concreto, podrías utilizar:
.SILENT: *.o
para silenciar todos los comandos utilizados para la construcción de la %.o
objetivos
-
En lugar de (o además de) usar
@
tu puedes hacerMAKEFLAGS += --quiet
. Eso también funcionará para las reglas integradas.– Idélico
14 de agosto de 2012 a las 19:22
-
si, pero entonces cada mando en cada la regla no se repetirá.
– mrucci
14/08/2012 a las 20:20
-
Como siempre, es una compensación, pero maneja reglas integradas. En general, hacer que las reglas integradas sean explícitas es una muy mala idea, por lo que establecer
MAKEFLAGS
puede ser un mejor método. O no, por supuesto.– Idélico
14 de agosto de 2012 a las 22:36
-
Quizas el
.SILENT
la solución es mejor?– mrucci
14 de agosto de 2012 a las 23:18
Siempre puede filtrar toda la salida de stdout
que debería dejarte con todos los errores en stderr
:
make 1>/dev/null
Usar @
antes de un comando para ocultarlo:
rule1:
@gcc someting