在makefile中为一组文件创建规则

时间:2010-10-07 03:03:44

标签: makefile wildcard rule

我正在编写一个Makefile,我想使用带有通配符的通用规则,比如

%: bkp/%
    cp $< $@

但我希望此规则仅对少数特定文件有效。我想用列表定义一个变量,例如

file_list = foo.c bar.c zzz.c

并配置规则,使其仅对此变量中列出的文件有效。我该怎么做?

2 个答案:

答案 0 :(得分:26)

您需要static pattern rule

file_list = foo.c bar.c zzz.c

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

语法与您使用的implicit pattern rule非常相似。是的,它通常更安全(更可预测)。

答案 1 :(得分:5)

当然,5分钟后我自己找到了答案...... :)

我们需要的是静态模式规则。

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

所以这个例子将用

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