Assumere doc.pdf
è l'obiettivo.
La regola seguente attiva una rigenerazione di doc.pdf
ogni volta che doc.refer
è aggiornato, ma è anche felice quando doc.refer
non esiste affatto:
doc.pdf: doc.mom $(wildcard doc.refer)
pdfmom -e -k < $< > [email protected]
Tuttavia la seguente regola del modello non ottiene lo stesso risultato (il PDF viene generato correttamente, ma non viene attivata una ricostruzione quando si modifica doc.refer
):
%.pdf: %.mom Makefile $(wildcard %.refer)
pdfmom -e -k < $< > [email protected]
Sospetto che il wildcard
il comando viene eseguito prima del %
il carattere è ampliato. Come posso aggirare questo problema?
Risposta accettata:
La funzione GNU Make wildcard
prende un pattern di globbing della shell e lo espande ai file che corrispondono a quel pattern. Il modello %.refer
non contiene alcun pattern di globbing della shell.
Probabilmente vuoi qualcosa come
%.pdf: %.mom %.refer
pdfmom -e -k < $< > [email protected]
%.pdf: %.mom
pdfmom -e -k < $< > [email protected]
Il primo target verrà invocato per creare file PDF quando è presente un .mom
e un .refer
file disponibile per il nome di base del documento. Il secondo target verrà invocato quando non è presente un .refer
file disponibile.
L'ordine di questi obiettivi è importante.