2010-03-30 7 views
1

Je garde mon source html (et images etc.) dans des répertoires séparés pour le contrôle de la source. Une partie de la distribution consiste à créer des fichiers de copie dans le dossier de sortie et à définir les attributs.GNU faire des fichiers de copie dans le répertoire de distribution

Aujourd'hui, mes makefile montre (extrait):

%.html: 
    /usr/bin/install -c -p -m 644 $< [email protected] 

www: $(HTMLDST)/firmware.html $(HTMLDST)/firmware_status.html $(HTMLDST)/index.html 
$(HTMLDST)/firmware.html: $(HTMLSRC)/firmware.html 
$(HTMLDST)/firmware_status.html: $(HTMLSRC)/firmware_status.html 
$(HTMLDST)/index.html: $(HTMLSRC)/index.html 

Ceci est illustré avec seulement trois fichiers html, mais en réalité, il y a beaucoup. Je voudrais juste lister les noms de fichiers (sans chemins) et faire la comparaison entre la source et la destination et copier les fichiers qui ont été mis à jour.

Nous vous remercions à l'avance Søren

Répondre

4

Cela devrait le faire:

$(HTMLDST)/%.html: $(HTMLSRC)/%.html 
    /usr/bin/install -c -p -m 644 $< [email protected] 

www: $(HTMLDST)/firmware.html $(HTMLDST)/firmware_status.html $(HTMLDST)/index.html 

Ou, par souci de concision:

HTMLFILES = firmware firmware_status index 

DESTFILES = $(patsubst %,$(HTMLDST)/%.html,$(HTMLFILES)) 

$(HTMLDST)/%.html: $(HTMLSRC)/%.html 
    /usr/bin/install -c -p -m 644 $< [email protected] 

.PHONY: www 
www: $(DESTFILES) 
+0

Merci beaucoup, tout ce que je avais besoin. – TheRoadrunner

+0

@TheRoadrunner, mon plaisir. Pourriez-vous marquer ma réponse "accepté"? – Beta