Directory-Platzhalter in der Datei Makefile Muster-Regel
Ich versuche, erstellen Sie ein Makefile, kompilieren terminfo-Dateien, die sich in einem Verzeichnis über tic
. tic
auch Kopien der termcap-Dateien, die es erstellt automatisch eine system - oder Benutzer-spezifischen Ziel-Ordner. Für einen normalen Benutzer, wenn der terminfo-Datei ist z.B. screen-256color-bce-s.terminfo
es wird kompiliert und kopiert ~/.terminfo/s/screen-256color-bce-s
. So wird es etwa so Aussehen:
terminfo/screen-256color-bce-s.terminfo => /home/user/.terminfo/s/screen-256color-bce-s
terminfo/screen-256color-s.terminfo => /home/user/.terminfo/s/screen-256color-s
Wenn ich so etwas in meinem Makefile:
TISRC = $(wildcard terminfo/*.terminfo)
TIDST = $(foreach x, $(TISRC), $(HOME)/.terminfo/$(shell basename $x|cut -c 1)/$(shell basename $x .terminfo))
$(HOME)/.terminfo/s/%: terminfo/%.terminfo
@echo "$< => $@"
@tic $<
install: $(TIDST)
es funktioniert. Jedoch, würde ich mag, um es allgemein, und verwenden Sie einen Platzhalter in der Ziel -, d.h.:
$(HOME)/.terminfo/**/%: terminfo/%.terminfo
@echo "$< => $@"
@tic $<
hinzufügen zu können terminfo-Dateien auf meinem lokalen repository. Die oben, aber funktioniert nicht. Wie kann ich festlegen, wildcard-directory in einer pattern-Regel?
- Ich glaube nicht, dass Sie es können; Machen ist nicht sehr gut mit wildcards.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies mit der GNU Make Sekundäre Erweiterung-Funktion:
Ausgabe:
As a side note, machen bietet einige Pfad-manipulation Funktionen, so dass Sie nicht wirklich brauchen, zum aufrufen der shell dafür.
/([[:word:]]+)/([[:word:]]+) : /build/\1/obj/\2.o
. Aber dies würde es schwierig machen, wählen Sie eine spezifischere Regel. Mit%
Muster, die bestimmte Muster ist das eine wobei%
abgestimmt die geringste Anzahl von Zeichen, wenn ich mich richtig erinnere.Ich glaube nicht, können Sie Platzhalter verwenden, die Weise, die Sie versuchen, aber wenn es Ihnen nichts ausmacht mit eval Tricks, können Sie den Effekt, den Sie Schießen, ohne zu buchstabieren, alle Verzeichnis-Pfade explizit: