GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von Platzhaltern in der Gnu-Make-Pattern-Regel?

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.


Linux
  1. Wie man dateispezifische Einstellungsänderungen in Vim mit Modeline vornimmt

  2. Mehrzeiliger Musterabgleich mit Sed, Awk oder Grep?

  3. Vorherige Zeile nach einer Musterübereinstimmung mit Sed drucken?

  4. Nur das erste Vorkommen nur mit Grep finden?

  5. Verwendung der Ausgabe vorheriger Befehle in Bash

Linux-Tipps zur Verwendung von GNU Screen

So erstellen Sie einen CS:GO-Server auf einem Linux-VPS

Verwenden von Curl zum Erstellen von REST-API-Anforderungen

So führen Sie eine Mustersuche in Dateien mit Grep durch

Machen Sie Ihre Fischschale schön mit Oh My Fish

Verwenden von sed zum Ersetzen zwischen einem bestimmten Muster