我正在编写一个 Makefile,我想使用通配符的通用规则,比如
%: bkp/%
cp $< $@
但我希望这条规则只对少数特定文件有效。我想用列表定义一个变量,例如
file_list = foo.c bar.c zzz.c
并配置规则,使其仅对该变量中列出的文件有效。我怎么做?
你想要一个静态模式规则:
file_list = foo.c bar.c zzz.c
$(file_list): %: bkp/%
cp $< $@
语法与您使用的隐式模式规则非常相似。是的,它通常更安全(更可预测)。
当然,5分钟后我自己找到了答案...... :)
我们需要的是静态模式规则。
http://www.gnu.org/software/make/manual/make.html#Static-Pattern
所以这个例子可以解决
$(file_list) : % : bkp/%
cp $< $@