Ich habe eine Verzeichnisstruktur wiepatsubst mit mehreren Platzhalter
packages/
foo/
lib/
a.js
b.js
bar/
lib/
c.js
d.js
und ich versuche, eine einfache Makefile
zu schreiben, um die Quelldateien über einen Compiler und geben das Ergebnis von laufen packages/foo/lib/a.js
-packages/foo/build/a.js
kompilieren. In der Vergangenheit habe ich etwas wie
JS = $(shell find packages/foo/lib -name "*.js")
BUILD = $(patsubst packages/foo/lib/%.js, packages/foo/build/%.js, $(JS))
.PHONY: all
all: $(BUILD)
packages/foo/lib/%.js: packages/foo/build/%.js
# Compile $^ and output to [email protected]
getan, das funktioniert super. Allerdings bin ich jetzt
JS = $(shell find packages/*/lib -name "*.js")
BUILD = $(patsubst ...)
Das Problem hier tun, ist, dass patsubst
nicht zu mögen scheint mehrere %
Platzhalter (dh packages/%/lib/%.js
). Wenn ich jedoch packages/%.js
verwende, kann ich nicht wissen, welches Verzeichnis in der Ersetzung verwendet werden soll. Ich bin überzeugt, dass es eine sehr einfache Möglichkeit gibt, dies zu tun, die ich in den make-Dokumenten nicht finden kann.
Wow, schön! Vielen Dank. Und meine Güte der 'cp' Compiler scheint wirklich schnell im Vergleich zu anderen, die ich mir angesehen habe wie' babel' und 'traceur';) –