En los archivos MAKE, una línea con el prefijo at en los símbolos disables the print of the output. Tengo un archivo MAKE en el que cada línea tiene un prefijo at, pero para depurarlo necesito ver qué está pasando. ¿Hay alguna manera de decir a make que ignore el at y la salida de la línea? la depuración es excesiva, y la opción -n los imprime, pero no hace nada (es para ejecución en seco)haciendo caso omiso del símbolo (@) en los archivos MAKE
Respuesta
Hacer una variable que tiene un valor predeterminado de @
:
AT := @
y luego usar eso en su Makefile
:
foo:
$(AT)fooc -o [email protected]
A continuación, ejecute make
como make AT=
. Puede obtener más elegante que eso, si te gusta:
V := 0
AT_0 := @
AT_1 :=
AT = $(AT_$(V))
Esto hará que los comandos de voz, a menos V
se establece en 1
(por ejemplo, make V=1
). Esto utiliza la característica no POSIX, pero común de la expansión de variables recursivas.
En GNU Make, esto no es posible de la caja. Tener un Makefile
que no puede configurarse completamente en silencio es simplemente una mala práctica. Quitar los signos @
y ejecutar con -s
es la forma más fácil de obtener una compilación silenciosa (excepto posibles comandos echo
).
Es posible (y fácil) crear un archivo Makefile con un nivel de detalle configurable. El kernel de Linux hace esto, al igual que 'automake'-generated' Makefile's con 'AM_SILENT_RULES'. –
Buen truco y una respuesta merecidamente aceptada, pero mis comentarios son válidos. –
Es cierto. Si haces alguna edición trivial, eliminaré mi voto downvote. –
Usted puede tener maquillaje decirle a otra persona para imprimir las órdenes medida que se ejecutan, lo que es lo mismo:
make SHELL='/bin/sh -x' ...your make arguments...
Sin embargo, esto no funcionará tan bien si su archivo MAKE contiene fragmentos de secuencias de comandos shell como recetas, en lugar de secuencias de comandos simples separados, ya que verá los comandos de shell individuales a medida que se encuentran en lugar de los fragmentos completos a medida que se invocan.
Alternativamente, podría aprovechar la naturaleza de software libre de GNU Make y modificar su propia versión que ignora los signos @
. Grepping el código fuente de GNU Make para COMMANDS_SILENT
pronto le muestran que es suficiente añadir 1 ||
a la condición ?:
en los argumentos de la llamada en message()
start_job_command()
en job.c. ¡Trabajo hecho!
+1 por la voluntad de sumergirse en la fuente. El software libre es genial así. –
sacar a todos los @ y añadir esta línea al Makefile:
.SILENT:
Cuando desea depurar, comente la línea .SILENT.
también es una buena idea. +1 –
Desactivar el @ delante de un script make es útil; sin embargo, a veces es demasiado ruidoso cuando el script make es muy largo. Otra técnica de depuración es activar una función de shell que emita comandos justo antes de que se ejecuten. Esto obvia la necesidad de manipular @ o .SILENT. Consideremos un ejemplo Makefile:
Ésta es probable que no portátil ya que depende de las características presentes en la cáscara que se ejecuta la secuencia de comandos, pero la portabilidad no es realmente tan importante para la depuración (si funciona para usted).
Para que las cosas sean aún más configurables, permita un interruptor de marca para permitir la verbosidad. Es el modo predeterminado de normal a silencioso. Sólo con el modo de VERBOSE -e = 1 será detallado por supuesto:
##
# Verbose ENABLE/DISABLE
# invoke make -e VERBOSE=1
##
[email protected]
ifeq ($(VERBOSE),1)
V=
endif
all:
$(V)echo test
echo test
Gracias por este tema era de gran ayuda para mi trabajo.
- 1. Haciendo caso omiso de los comentarios del estilo C en un analizador del combinador de Scala
- 2. DotNetZip: ¿Cómo extraer los archivos, pero haciendo caso omiso de la ruta en el archivo zip?
- 3. haciendo caso omiso de las carpetas en mercurial
- 4. el relleno de separación, haciendo caso omiso de que
- 5. Haciendo caso omiso de una propiedad durante la deserialización
- 6. Haciendo caso omiso del directorio al realizar una confirmación SVN en Eclipse
- 7. Haciendo caso omiso del año en consultas SQL con el periodo
- 8. Haciendo caso omiso del selector CSS específico de Webkit en Firefox
- 9. Documentos PHP Dom: conseguir textContent haciendo caso omiso de las etiquetas y comentarios del guión
- 10. validación discreto haciendo caso omiso de los atributos de datos-val, pero trabajar con class = "required"
- 11. - [<CALayer: 0x5584190> pantalla]: Haciendo caso omiso del tamaño de capa falsa
- 12. Rieles: Haciendo caso omiso de los atributos inexistentes pasaron a crear()
- 13. ¿Los archivos MAKE están completos?
- 14. ¿Por qué es NHibernate Fluent haciendo caso omiso de mi restricción única en un componente?
- 15. Separar una cadena en bi-gramos, haciendo caso omiso de ciertas etiquetas
- 16. Haciendo caso omiso de las advertencias de PHP en la PHPUnit
- 17. Separar una cadena, haciendo caso omiso de delimitador entre comillas (pitón)
- 18. SVn ayuda haciendo caso omiso de una carpeta: 'objetivo explícito requerido'
- 19. Geting "ventana ya se centró, haciendo caso omiso de la ganancia foco de: com.android.internal.view.IInputMethodClient $ Trozo $ Proxy" en Android
- 20. opciones del compilador para mezclar el ARC y el Código no se hace caso omiso ARC
- 21. fichero Make: compilar todos los archivos .cpp a .o archivos
- 22. Javascript: Separar una cadena por una coma, pero haciendo caso omiso de las comas en las citas
- 23. ¿Qué hace un símbolo de porcentaje en un archivo MAKE?
- 24. Java xstream - ¿Cómo hacer caso omiso de algunos elementos
- 25. "git describir" hace caso omiso de una etiqueta
- 26. TastyPie - Override_urls hace caso omiso de autenticación y autorización
- 27. Depende del archivo make
- 28. Incluyendo bibliotecas de impulso en los archivos de make
- 29. Haciendo el caso de IronRuby e IronPython
- 30. Cómo hacer caso omiso de etiquetas de palabras clave de CVS en diff Eclipse
También puede usar ': =' en lugar de '=' para la línea 'AT ='. No puedo recordar –
+1 para el truco genial –