J'ai un Makefile qui démarre en exécutant un outil avant d'appliquer les règles de construction (que cet outil écrit pour moi). Si cet outil, qui est un script python, se termine avec un code d'état non nul, je veux que GNU Make s'arrête là et ne continue pas à construire le programme.
Actuellement, je fais quelque chose comme ça (niveau supérieur, à savoir la colonne 1):
$(info Generating build rules...)
$(shell python collect_sources.py)
include BuildRules.mk
Mais cela ne s'arrête pas faire si collect_sources.py
sorties avec un code d'état 1. Cette capture également la sortie standard de collect_sources.py
mais ne l'imprime pas, donc j'ai le sentiment que je regarde dans la mauvaise direction.
Si possible, la solution devrait même fonctionner lorsqu'un simple shell MS-DOS est le shell système standard.
Une suggestion?
Si vous avez GNU make 4.2 ou supérieur, vous pouvez vérifier la variable '$ (. SHELL_STATUS)' qui contiendra l'état de sortie de la dernière fonction '$ (shell ...)' évaluée. – MadScientist
Le nom de la variable est '$ (. SHELLSTATUS)', sans '_'. https://www.gnu.org/software/make/manual/html_node/Shell-Function.html # Shell-Function – user3159253