2012-01-03 4 views
2

J'ai du mal à écrire Makefiles et je suis building up some examples pour apprendre. Je veux utiliser Makefiles car il rend les builds simultanés, les projets plus uniformes et plus faciles à gérer.Créer un script pour Makefile

Avez-vous des ressources à partager? Par exemple, j'ai du mal à penser comment transformer ce simple script de construction en un Makefile, de sorte que index.html ne soit construit que lorsque son index.src.html est modifié.

for i in */index.src.html 
do 
    anolis --max-depth=3 $i $(dirname $i)/index.html 
done 

Répondre

2

Essayez d'utiliser une règle de modèle. De the GNU Makefile manual:

Ainsi, une règle de modèle '% .o:% .c dit comment faire une stem.o de fichier à partir d'un autre fichier stem.c.

Donc, quelque chose comme

INFILES = $(shell find . -name index.src.html) 
OUTFILES = $(addsuffix .html, $(basename $(basename $(INFILES)))) 

default: $(OUTFILES) 

%.html : %.src.html 
    anolis --max-depth=3 $< [email protected] 

clean: 
    rm -f $(OUTFILES) 

L'astuce est alors mise en place INFILES de manière fiable et sûre.

+0

s,% src,% src.html, sinon des trucs fantastiques! Fonctionne bien :) – hendry

+1

Juste un point stylistique: vous pouvez également utiliser une référence de substitution pour générer 'OUTFILES':' OUTFILES = $ (INFILES: .src.html = .html) '. Cela rend un peu plus clair ce qui se passe. – eriktous

Questions connexes