Supposons doc.pdf
est la cible.
La règle suivante déclenche une régénération de doc.pdf
chaque fois que doc.refer
est mis à jour, mais est également heureux lorsque doc.refer
n'existe pas du tout :
doc.pdf: doc.mom $(wildcard doc.refer)
pdfmom -e -k < $< > [email protected]
Cependant, la règle de modèle suivante n'accomplit pas la même chose (le PDF est généré correctement, mais une reconstruction n'est pas déclenchée lors de la modification de doc.refer
):
%.pdf: %.mom Makefile $(wildcard %.refer)
pdfmom -e -k < $< > [email protected]
Je soupçonne que le wildcard
la commande est exécutée avant le %
le personnage est développé. Comment puis-je contourner ce problème ?
Réponse acceptée :
La fonction GNU Make wildcard
prend un modèle global de shell et l'étend aux fichiers correspondant à ce modèle. Le modèle %.refer
ne contient aucun modèle de globalisation du shell.
Vous voulez probablement quelque chose comme
%.pdf: %.mom %.refer
pdfmom -e -k < $< > [email protected]
%.pdf: %.mom
pdfmom -e -k < $< > [email protected]
La première cible sera invoquée pour créer des fichiers PDF lorsqu'il y a un .mom
et un .refer
fichier disponible pour le nom de base du document. La deuxième cible sera invoquée lorsqu'il n'y a pas de .refer
fichier disponible.
L'ordre de ces cibles est important.