如何生成复杂的Makefile,例如从模板

时间:2009-08-20 09:48:11

标签: templates makefile

Makefile非常有用。但是,语法有些复杂且有限。对于一个项目,我需要创建目标1到n,并且真的想写这样的东西:

all : target1 ... target100

target%d : target%d.pre
    ./script.py %d

我希望make捕获变量(%d),然后在整个规则中使用它。我可以想象,通过复杂地使用模式(%.xyz)和patsubst可以做到这一点,但这将是非常笨拙和不可读的。

我正在考虑使用像Cheetah这样的模板引擎来编写一个模板(可以包含循环),然后将其转换为Makefile。有没有人有更好的想法或经验?

2 个答案:

答案 0 :(得分:0)

你一定要看看CMake,它可以为你做所有的makefile生成。

答案 1 :(得分:0)

正如beta在评论中指出的那样,第二部分实际上是由

解决的
target% : target%d.pre
    ./script.py %d

鉴于此,第一部分可以通过以下方式解决:

files := $(shell for i in `seq 1 100`; do echo target$$i; done)

all : $(files)