¿Hay alguna manera de registrar los comandos, hacer invocaciones para compilar un programa? Sé de los parámetros -n
y -p
, pero o bien no resuelven las condiciones de if sino que simplemente las imprimen. O no funcionan, cuando hay llamadas a 'make' en el Makefile.Comandos de inicio de sesión de make
Respuesta
Puede encontrar lo que está buscando en los registros de construcción anotados producidos por SparkBuild. Eso incluye los comandos de cada regla ejecutada en la construcción, ya sea que se haya utilizado o no "@" para evitar que la impresión de la línea de comando.
Su comentario sobre if-conditions es un poco confuso: ¿está hablando de construcciones de shell o construcciones? Si te refieres a construcciones de caparazón, no creo que haya ninguna forma de que obtengas exactamente lo que buscas, excepto al utilizar strace como otros describieron. Si quiere decir construir, entonces la salida que ve es el resultado de la expresión condicional resuelta.
¿Has probado con el parámetro -d (depuración)?
Tenga en cuenta que puede controlar la cantidad de información con --debug en su lugar. Por ejemplo, --debug = a (igual que -d), o --debug = b para mostrar solamente informaciones básicas ...
Sin olvidar redirigir stdout a un archivo, make -d produce mucha información muy rápidamente. –
Se podría tratar de conectarse con execve
llamadas strace
strace -f -e execve make ...
Esa es una buena herramienta. No había oído hablar de eso todavía. Pero produce mucho rendimiento, no lo necesito en este caso. – Customizer
Strace es una herramienta para rastrear todas las llamadas al sistema (en mi ejemplo limitado a execv), así que sí probablemente le dará más del mínimo que está buscando (específicamente imprimirá todos los intentos (fallidos) para ejecutar un comando desde todos los directorios $ PATH). – hlovdal
Hacer escribe cada comando que se ejecuta en la consola, por lo
make 2>&1 | tee build.log
va a crear un archivo de registro denominado build.log
como un efecto secundario que contiene el mismo material escrito en la pantalla. (man tee
para más detalles.)
2>&1
combina salida estándar y errores en una secuencia. Si no incluyó eso, la salida regular entraría en el archivo de registro pero los errores solo irían a la consola. (make
sólo escribe en stderr cuando un comando devuelve un código de error.)
Si desea suprimir la salida del todo a favor de registro en un archivo, que es aún más simple:
make 2>&1 > build.log
Debido a que estos sólo captan la consola salida funcionan bien con recursivo make
.
Los comandos que tienen el prefijo @ (ejecución silenciosa) no están incluidos en este registro, desafortunadamente. –
Este
make SHELL="sh -x"
hará que la cáscara (que hacen que invoca para evaluar las construcciones shell) para imprimir la información acerca de lo que está haciendo, que le permite ver cómo se están evaluando los condicionales en los comandos de la shell.
Esta es una respuesta útil – tonylo
- 1. Iniciando sesión sin mostrar una página de inicio de sesión
- 2. Inicio de sesión en J2ME
- 3. Iniciar secuencia de comandos por lotes antes de la ventana de inicio de sesión de Windows
- 4. Herramientas de línea de comandos de AWS ¿Necesita una grabación para un inicio de sesión seguro?
- 5. 10 segundos de retraso entre el inicio de sesión y el intérprete de comandos de shell.
- 6. Cookies de inicio de sesión/sesión, Ajax y seguridad
- 7. sesión se pierde después de un inicio de sesión exitoso?
- 8. Crear una sesión de inicio de sesión interactiva
- 9. Las variables de sesión se pueden engañar (inicio de sesión)?
- 10. Iniciar sesión en PostgreSQL - Error de inicio de sesión
- 11. Secuencia de comandos de inicio en EC2
- 12. Android HTTP preguntas de inicio de sesión
- 13. página de inicio de sesión en phpmyadmin
- 14. cakephp condiciones de inicio de sesión personalizado
- 15. Sistema de inicio de sesión con Codeigniter
- 16. Código de inicio de sesión en Xcode
- 17. C# ejemplos de inicio de sesión
- 18. inicio de sesión de la aplicación Android
- 19. sistema de inicio de sesión sin contraseña
- 20. Diseñar formulario de inicio de sesión personalizado
- 21. Contraseña de inicio de sesión predeterminada
- 22. IIS solicitando credenciales de inicio de sesión
- 23. Ocultar actividad de inicio de sesión
- 24. fb: botón de inicio de sesión personalizado?
- 25. PHP clase de inicio de sesión
- 26. Diálogo de inicio de sesión PyQt
- 27. Inicio de secuencia de comandos cuando Gnome se inicia
- 28. Configuración elegante de inicio de sesión de Python en Django
- 29. No se puede abrir la base de datos solicitada por el inicio de sesión. El inicio de sesión falló. Falló el inicio de sesión para el usuario
- 30. Google/OAuth 2 - Inicio de sesión automático
Parecen ser construcciones de concha.Pero no sé por qué alguien quiere usar construcciones de shell en Makefiles, cuando puede usar los constructos de Makefile. ¿Son mejores de alguna manera? – Customizer
I SparkBuild se ve interesante. Definitivamente voy a investigar esto. – Customizer
La cuestión de las construcciones de shell versus las construcciones depende de lo que estás tratando de hacer. Por un lado, hay cosas que puedes hacer con las construcciones de shell que no puedes hacer con make constructs, como probar que un archivo sea legible o ejecutable. Por otro lado, se evalúan en diferentes momentos con respecto a los otros comandos en el cuerpo de la regla: las construcciones make se evalúan antes de que se ejecuten realmente los comandos, pero las construcciones del armazón se evaluarán in situ a medida que se ejecutan los comandos. –