2012-06-12 11 views
23

veo que esta es la misma pregunta queque hace maquillaje comandos de impresión antes de ejecutar SIN utilizar CMake

Making cmake print commands before executing

Pero esa respuesta no funciona para mí. Supongo que la respuesta solo funciona con cmake. ¿Qué opciones funcionan sin cmake?

Nota trató estos

make VERBOSE=1 target 
make target VERBOSE=1 
VERBOSE=1 make target 
make V=1 target 
make target V=1 
V=1 make target 
make -V target 
make -v target 

ninguno de ellos funcionó.

make -v devuelve

GNU Make 3.81 
Copyright (C) 2006 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. 
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. 

This program built for x86_64-pc-linux-gnu 
+0

Ya teníamos alguna discusión sobre esto, pero acabo de descubrir otra pregunta que es muy similar: [¿Hay alguna manera de “hacer” a Comandos echo] (http://stackoverflow.com/q/4396107/1380680). –

+0

posible duplicado de [¿Cómo fuerzo make/gcc para que me muestre los comandos?] (Http://stackoverflow.com/questions/5820303/how-do-i-force-make-gcc-to-show-me- the-commands) –

Respuesta

74

Por defecto, make se imprime cada comando antes de ejecutarlo. Esta impresión puede ser suprimida por uno de los siguientes mecanismos:

  • sobre una base caso por caso, mediante la adición de @ en el principio del comando
  • a nivel mundial, añadiendo el objetivo incorporado .SILENT .
  • en algún lugar a lo largo del proceso de marca, mediante la invocación de sub-make (s) con una de las banderas -s, --silent o --quiet, como en $(MAKE) --silent -C someDir, por ejemplo. A partir de ese momento, el eco del comando se suprime en la submatriz.

Si su archivo MAKE no imprime los comandos, entonces probablemente esté utilizando uno de estos tres mecanismos, y usted tiene que inspeccionar realmente el archivo MAKE para determinar cuál.

Como solución alternativa para evitar estos mecanismos de supresión de eco, puede volver a definir el shell que se utilizará para usar un modo de depuración, por ejemplo, como make SHELL="/bin/bash -x" target. Otros proyectiles tienen opciones similares. Con ese enfoque, no está make imprimiendo los comandos, sino el propio shell.

Si utiliza la bandera -n o --just-print, se tendrán en cuenta los mecanismos de eco-supresión y siempre se verá todos los comandos que make piensa que deberían ser ejecutados - pero no están realmente ejecutados, acaba de imprimir. Esa podría ser una buena manera de descubrir qué es lo que realmente puede esperar ver.

La variable VERBOSE no tiene un significado estándar para make, pero solo si su archivo MAKE lo interpreta.

+1

¿Así que no hay forma de hacer que la impresión se esté ejecutando? -n no funciona porque necesito ver que falla en el contexto y por cualquier razón que ejecute el resultado de -n no es lo mismo que sin él. – gman

+0

De forma predeterminada, 'make' * * imprimirá lo que está ejecutando. Lo que dije es que su (s) archivo (s) genético (s) probablemente usen un mecanismo para suprimir ese eco, ya sea por medio del signo '@' enfrente del comando, o por medio del objetivo incorporado '.SILENT'.Tienes que buscar en el archivo MAKE para ver si ese es realmente el caso. –

+0

Gracias, supongo que esperaba que hubiera una anulación como --verbose-level = 10000000 o --ignore-silent No tengo control de mis archivos make. Estoy en un proyecto con> 500 programadores. – gman

1

Creo que esto es lo que quiere: maquillaje MAKE_VERBOSE = 1 objetivo

Cuestiones relacionadas