Ich möchte ein einzelnes Makefile verwenden, um Ziele in Hunderten von Unterverzeichnissen zu erzeugen. Jedes Unterverzeichnis ist ein Datums- / Zeitstempel wie folgt: 20120119_153957
, der mit dem folgenden Muster ????????_??????
übereinstimmt. Es gibt keine anderen Unterverzeichnisse, die diesem Muster entsprechen.
Ein Ziel, das ich erzeugen möchte, heißt ????????_??????/graph.pdf
. Ich habe ein Skript namens make_graph
, das dem Graphen den Namen des Unterverzeichnisses gibt. Aber ich bin mir nicht sicher, wie man ein Makefile schreibt, das automatisch alle Unterverzeichnisse globalisiert und diese Ziele programmatisch erzeugt.
Zum Beispiel scheint der Code SUBDIRS:=????????_??????
alle Unterverzeichnisse korrekt zu globalisieren. Ich kann mit dieser Regel überprüfen:
Allerdings diese variable Zuweisung
%Vor%scheint nicht zu tun, was ich erwarte und viele und viele Ziele zuweisen. Stattdessen druckt die folgende Regel nur ein Ziel.
%Vor% Es ist sehr verwirrend, dass SUBDIRS
die richtigen Unterverzeichnisse haben sollte, aber TARGET
nur eine Datei hat.
In Ihrem Beispiel wird der Glob-Matching von der Shell durchgeführt.
GNU Make hat die eingebaute Funktion wildcard
, welche Sie können wie folgt verwenden:
Jetzt können Sie diese Variable verwenden, um eine Liste von Zielen zu erstellen:
%Vor%Siehe auch: Musterregeln , automatische Variablen .