2016-04-18 14 views
1

Dies scheint einfach, aber es entzieht sich mir. Wie kann ich ein einzelnes Ziel erstellen, um eine Liste von Dateien mit unterschiedlichen Dateinamen zu kopieren?Ziel zum Kopieren von Dateien machen

Ich versuche, alle $ (IMG) -Dateien in ../images/class in das aktuelle Verzeichnis zu kopieren.

Ich habe dies versucht:

CP := cp 

IMGS := \ 
    A.png \ 
    A.tif \ 
    A.eps \ 
    B.png \ 
    B.tif \ 
    B.eps 

SRC_IMG_DIR := ../images/class 

.SECONDEXPANSION: 
$(IMGS): $$($(SRC_IMG_DIR)/[email protected]) 
    $(CP) -f $^ [email protected] 
+0

Was ist damit nicht genau funktioniert? Was passiert, wenn Sie 'make' ausführen? ... Oh, ich verstehe. –

+0

Einschließlich spezifischer detaillierter Fehler sind unerwünschte Ergebnisse ** wirklich ** hilfreich. –

Antwort

2

Eigentlich bist du selbst nur verwirrend versuchen, sekundäre Expansion in erster Linie zu verwenden. Dies ist eine einfache Situation, so dass eine einfache Anwendung eines Standardmuster Regel den Trick tun wird:

% : $(SRC_IMG_DIR)/% 
     $(CP) -f $< [email protected] 

Secondary Expansion ist nur für kompliziertere/knifflige Probleme benötigen.

1

Ihr Problem ist, dass Sie einmal zu oft erweitern.

Du $(SRC_IMG_DIR)/[email protected]) die $(SRC_IMG_DIR) Bit nimmt während der anfänglichen Parsing-Phase und die [email protected] Bit, von denen während der sekundären Expansions Mini-Phase und werden wieder, dassErgebnis dann erweitert erweitert erweitert.

Nehmen wir an, Sie führen make A.png die ersten Parsergebnisse in A.png A.tif ...: $(../images/class/[email protected]).

Zielbestimmung erfolgt dann und make entscheidet es A.png bauen muss so findet er die A.png Ziel und sieht, dass es $(../images/class/[email protected]) erweitern muss, erweitert [email protected] (was A.png ist) und bekommt $(../images/class/A.png) und erweitert dann ../images/class/A.pngals Variablenname und endet mit einer leeren Voraussetzung und läuft cp -f A.png.

Sie wollen nicht, dass letzte Erweiterung der Verpackung $(...) so fallen:

$(IMGS): $(SRC_IMG_DIR)/[email protected] 
Verwandte Themen