Tengo un Makefile que comienza ejecutando una herramienta antes de aplicar las reglas de compilación (que esta herramienta escribe para mí). Si esta herramienta, que es una secuencia de comandos python, sale con un código de estado no nulo, quiero que GNU Make se detenga allí y no continúe con la construcción del programa.
Actualmente, hago algo como esto (nivel superior, es decir, la columna 1):
$(info Generating build rules...)
$(shell python collect_sources.py)
include BuildRules.mk
Pero esto no impide que si collect_sources.py
salidas con un código de estado de 1. Esto también captura la salida estándar de collect_sources.py
pero no lo imprime, así que tengo la sensación de que estoy mirando en la dirección incorrecta.
Si es posible, la solución incluso debería funcionar cuando un shell simple de MS-DOS es el shell estándar del sistema.
¿Alguna sugerencia?
Si tiene GNU 4.2 o superior, puede verificar la variable '$ (. SHELL_STATUS)' que contendrá el estado de salida de la última función '$ (shell ...)' evaluada. – MadScientist
El nombre de la variable es '$ (. SHELLSTATUS)', sin '_'. https://www.gnu.org/software/make/manual/html_node/Shell-Function.html # Shell-Function – user3159253