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

div*_*ero 20 makefile wildcard rule

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

%: bkp/%
    cp $< $@
Run Code Online (Sandbox Code Playgroud)

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

file_list = foo.c bar.c zzz.c

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

j_r*_*ker 28

你想要一个静态模式规则:

file_list = foo.c bar.c zzz.c

$(file_list): %: bkp/%
        cp $< $@
Run Code Online (Sandbox Code Playgroud)

语法与您使用的隐式模式规则非常相似.是的,它通常更安全(更可预测).


div*_*ero 5

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

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

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

所以这个例子可以解决

$(file_list) : % : bkp/%
    cp $< $@
Run Code Online (Sandbox Code Playgroud)