2017-10-12 8 views
0

Je vérifie de manière incrémentielle ma sortie de build et je veux pouvoir quitter après l'exécution d'une recette donnée.gnu make - force de sortie sans supprimer la cible

Si la recette originale est

$(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD) 
    $(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py [email protected] 

Je veux être en mesure d'ajouter une ligne à la fin comme si

$(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD) 
    $(Q)$(PYTHON) $(PY_SRC)/makeversionhdr.py [email protected] 
    some_command 

et some_command devrait simplement arrêter l'exécution du makefile sans interférer avec le reste de la recette.

Si je mets some_command comme exit 1, je reçois

../py/py.mk:269: recette pour cible 'build-gnu/genhdr/mpversion.h' make a échoué: * [build-gnu/genhdr/mpversion.h] erreur 1 marque: * Suppression du fichier 'build-gnu/genhdr/mpversion.h'

Si je mets some_command comme $(error), la recette est même pas exécuté même si c'est AVANT le $(error)

Y a-t-il une telle commande qui arrête l'exécution du makefile mais ne supprime pas la cible?

MISE À JOUR
J'ai trouvé ce hack: faire .PRECIOUS dépendent de la cible et ajouter exit 1 comme la dernière ligne de la recette.

Répondre

1

Si le fichier que vous souhaitez conserver est un intermédiaire fichier(non mentionné comme cible ou la dépendance d'une règle - mais peut-être sous-entendus par une règle de modèle), alors vous aurez besoin de faire une dépendance de .PRECIOUS. Sinon, il suffira de supprimer ou de commenter temporairement la cible .DELETE_ON_ERROR: que nous avons tous placée dans chaque fichier Makefile.