Создать правило в makefile только для набора файлов - PullRequest
19 голосов
/ 07 октября 2010

Я пишу Makefile и хочу использовать универсальное правило с подстановочными знаками, например

%: bkp/%
    cp $< $@

Но я хотел, чтобы это правило действовало только для нескольких конкретных файлов.Я хотел определить переменную со списком, например

file_list = foo.c bar.c zzz.c

и настроить правило так, чтобы оно действовало только для файлов, перечисленныхэта переменная.Как мне это сделать?

Ответы [ 2 ]

26 голосов
/ 07 октября 2010

Вы хотите правило статического шаблона :

file_list = foo.c bar.c zzz.c

$(file_list): %: bkp/%
        cp $< $@

Синтаксис очень похож на правило неявного шаблона , которое вы использовали. И да, это в целом безопаснее (более предсказуемо).

5 голосов
/ 07 октября 2010

Конечно, через 5 минут я сам нашел ответ ...:)

Нам нужно правило статического шаблона.

http://www.gnu.org/software/make/manual/make.html#Static-Pattern

Так что пример будет решен с помощью

$(file_list) : % : bkp/%
    cp $< $@
...