2009-07-23 4 views
2

Je voudrais une règle quelque chose comme:règle Makefile pour construire avec le même nom, mais un répertoire différent

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

J'ai un répertoire de fichiers dans un dossier que je veux optimiser, puis la sortie vers un autre dossier . Toutefois, les fichiers ont le même nom dans les dossiers d'entrée et de sortie. J'ai essayé différentes itérations de la règle ci-dessus, mais make sera toujours ou jamais reconstruire en fonction de comment je tweak ce qui précède. Suggestions? Je me suis retrouvé avec la solution suivante, qui fonctionne très bien!

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 > $< 

Répondre

4

Essayez somethink comme ceci:

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

MAKE recherche parfois de modification de décider si le fichier doit être optimisé à reconstruire. Alors regardez le mod. temps de fichier src et le temps de fichier optimisé correspondant à comprendre si make devrait vraiment reconstruire le fichier optimisé. Utilisez "stat " pour afficher l'heure de modification en seconde résolution. – dimba

+0

Je comprends comment faire fonctionner. Je n'ai pas modifié les fichiers sources en heures, et ils sont toujours en cours de reconstruction. –

+0

Vous l'avez eu raison. Je viens de faire quelques fautes de frappe. Merci! –