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.