marque : règle l'appel de la règle
Dans un makefile, puis-je appeler une règle à partir d'une autre règle?
Similaires à:
rule1:
echo "bye"
rule2:
date
rule3:
@echo "hello"
rule1
Vous devez vous connecter pour publier un commentaire.
Utiliser les dépendances ou récursive faire pour se connecter à partir d'une règle à l'autre.
Dépendances serait fait comme cela (bien que l'ordre sera différent):
Version récursive serait fait comme cela (même si elle implique un sous-processus):
N'est parfait; en effet, avec la version récursive, vous pouvez obtenir dans d'importants problèmes si vous créez une boucle. Vous aussi sans doute faudrait ajouter une
.PHONY
règle afin de marquer ces règles ci-dessus en tant que synthétique, de sorte qu'un parasiterule1
(etc.) dans le répertoire de ne pas causer de la confusion.Il suffit d'ajouter une nouvelle règle avec la commande que vous voulez..
make -j2
, par exemple) vous donnera indeterminant ordre d'exécution.Les Makefiles sont pas de procédure; "règles" ne sont pas comme des fonctions. Cela dit, vous pouvez spécifier qu'une règle est une condition préalable de l'autre:
Si vous ne
make rule2
, vous devriez voir:Il y a deux fonctions avancées de GNU Make qui peut le faire, même si elle doit être utilisée uniquement en cas de circonstances atténuantes. C'est DONC classé top dans google.
Règle les conditions préalables sont les plus recommandés, mais parfois vous avez besoin d'une post-condition.
GNU Faire Appel de la fonction
GNU Make fonction Eval
Essentiellement, Eval permet de construire des objectifs à la volée, et l'Appel permet de fonctionner comme "définit" d'être créé.