如何从Makefile中的目标列表创建规则?
我的项目由一些配置文件组成,它们是从相应的模板生成的。e、 g.如何从Makefile中的目标列表创建规则?,makefile,templating,Makefile,Templating,我的项目由一些配置文件组成,它们是从相应的模板生成的。e、 g.foo.tmpl=>foo。现在我希望编写一个Makefile,它可以从模板生成相应的文件 我不能有这样的东西: % : %.tmpl generate-from-tmpl $< 我想要的东西看起来像: $(foreach GENERATED_FILES) : $@.tmpl generate-from-tmpl $< $(foreach生成的_文件):$@.tmpl 从tmpl生成$< 我怎样
foo.tmpl
=>foo
。现在我希望编写一个Makefile,它可以从模板生成相应的文件
我不能有这样的东西:
% : %.tmpl
generate-from-tmpl $<
我想要的东西看起来像:
$(foreach GENERATED_FILES) : $@.tmpl
generate-from-tmpl $<
$(foreach生成的_文件):$@.tmpl
从tmpl生成$<
我怎样才能做到这一点?谢谢。
%:%.tmpl
将尝试将目标%
与任何目标名称匹配,但如果不存在匹配的%.tmpl
文件,则make将完全跳过该目标的模式
我相信这正是你想要的。你有什么理由不这么认为吗
也就是说,如果你想更具体,你想要的是:
而不是shell和
find
(也有递归的make通配符定义,但是如果需要的话,find
是合理的)。我误解了%的含义:%.tmpl
。但多亏了你的回答,我的困惑才得以解决。非常感谢。
$(foreach GENERATED_FILES) : $@.tmpl
generate-from-tmpl $<
$(GENERATED_FILES) : % : %.tmpl
generate-from-tmpl $<
TEMPLATED_FILES=$(wildcard *.tmpl)