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.