我正在编写一个Makefile,我想使用带有通配符的通用规则,比如
%: bkp/%
cp $< $@
但我希望此规则仅对少数特定文件有效。我想用列表定义一个变量,例如
file_list = foo.c bar.c zzz.c
并配置规则,使其仅对此变量中列出的文件有效。我该怎么做?
答案 0 :(得分:26)
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 $< $@