Angenommen doc.pdf
ist das Ziel.
Die folgende Regel löst eine Neugenerierung von doc.pdf
aus wann immer doc.refer
aktualisiert wird, freut sich aber auch wenn doc.refer
existiert überhaupt nicht:
doc.pdf: doc.mom $(wildcard doc.refer)
pdfmom -e -k < $< > [email protected]
Die folgende Musterregel bewirkt jedoch nicht dasselbe (das PDF wird korrekt generiert, aber ein Neuaufbau wird nicht ausgelöst, wenn doc.refer
geändert wird ):
%.pdf: %.mom Makefile $(wildcard %.refer)
pdfmom -e -k < $< > [email protected]
Ich vermute, dass der wildcard
Befehl wird vor dem %
ausgeführt Charakter erweitert. Wie kann ich das umgehen?
Akzeptierte Antwort:
Die GNU-Make-Funktion wildcard
nimmt ein Shell-Globing-Muster und erweitert es auf die Dateien, die diesem Muster entsprechen. Das Muster %.refer
enthält keine Shell-Globing-Muster.
Wahrscheinlich möchten Sie so etwas wie
%.pdf: %.mom %.refer
pdfmom -e -k < $< > [email protected]
%.pdf: %.mom
pdfmom -e -k < $< > [email protected]
Das erste Ziel wird zum Erstellen von PDF-Dateien aufgerufen, wenn eine .mom
vorhanden ist und ein .refer
verfügbare Datei für den Basisnamen des Dokuments. Das zweite Ziel wird aufgerufen, wenn kein .refer
vorhanden ist Datei verfügbar.
Die Reihenfolge dieser Ziele ist wichtig.