2009-07-23 5 views
2

ich eine Regel so etwas wie möchte:Makefile Regel mit dem gleichen Namen zu bauen, aber anderes Verzeichnis

build/%.ext: src/%.ext 
    action 

Ich habe ein Verzeichnis von Dateien in einem Ordner, die wir optimieren wollen und dann an einen anderen Ordner . Die Dateien haben jedoch denselben Namen in den Eingabe- und Ausgabeordnern. Ich habe verschiedene Iterationen der oben genannten Regel ausprobiert, aber make wird entweder immer oder nie neu aufbauen, je nachdem, wie ich das obige tweeze. Vorschläge?

EDIT: Ich endete mit der folgenden Lösung, die gut funktioniert!

JS = \ 
    src/js/script2.js \ 
    src/js/script1.js 

JS_OPT = $(patsubst src/js/%.js,web/js/%.js, $(JS)) 

all: $(JS_OPT) 

$(JS_OPT): web/js/%.js: src/js/%.js 
    cat [email protected] | ./bin/jsmin > $< 

Antwort

4

Try some wie folgt aus:

INPUT_FILES = \ 
    src/a.txt \ 
    src/b.txt \ 

OPTIMIZED_FILES=$(patsubst src/%.ext,build/%.ext,$(INPUT_FILES)) 

$(OPTIMIZED_FILES): build/%.ext: src/%.txt 
    optimize_command [email protected] $< 
+0

Machen Sie Änderungszeiten schaut, um zu entscheiden, ob optimierte Datei neu erstellen werden sollte. Also schau dir den Mod an. Zeit der src-Datei und der entsprechenden optimierten Dateizeit, um zu verstehen, ob make die optimierte Datei wirklich neu erstellen sollte. Verwenden Sie "stat ", um die Modifikationszeit in Sekunden Auflösung anzuzeigen. – dimba

+0

Ich verstehe, wie make funktioniert. Ich habe die Quelldateien nicht in Stunden geändert und sie werden immer noch neu erstellt. –

+0

Sie hatten es richtig gemacht. Ich habe gerade ein paar Tippfehler gemacht. Vielen Dank! –

Verwandte Themen