2016-04-18 4 views
1

Это кажется простым, но это ускользает от меня. Как создать единую цель для копирования списка файлов с разными именами файлов?Сделать копию для копирования файлов

Я пытаюсь скопировать все файлы $ (IMG) в ../images/class в текущий каталог.

Я попытался это:

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

Как насчет этого не работает? Что происходит, когда вы запускаете 'make'? ... О, я вижу. –

+0

Включая конкретную подробную ошибку, нежелательные результаты ** действительно полезны. –

ответ

2

На самом деле вы просто путаете себя пытаются использовать вторичное расширение в первую очередь. Это простая ситуация, поэтому простое применение стандартного шаблонного правила будет делать трюк:

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

Secondary расширению нужно только для более сложных/сложных проблем.

1

Ваша проблема заключается в том, что вы расширяете слишком много раз.

Вы принимаете $(SRC_IMG_DIR)/[email protected])$(SRC_IMG_DIR) немного расширяется во время начальной фазы синтаксического анализа и [email protected] бит, который расширяется во время вторичного расширения мини-фазы и затем расширяется, что результате снова.

Предположим, вы запустили make A.png исходные результаты анализа в A.png A.tif ...: $(../images/class/[email protected]).

определения

Target, то происходит и make решает, что необходимо строить A.png так он находит A.png цели и видит, что он нуждается в расширении $(../images/class/[email protected]), расширяет [email protected] (который A.png) и получает $(../images/class/A.png), а затем расширяет ../images/class/A.pngв качестве имени переменного и заканчивается пустым предварительным условием и заканчивается запуском cp -f A.png.

Вы не хотите, чтобы в последний раз расширение так уронить оберточной $(...):

$(IMGS): $(SRC_IMG_DIR)/[email protected] 
Смежные вопросы