Makefile非常有用。但是,语法有些复杂且有限。对于一个项目,我需要创建目标1到n,并且真的想写这样的东西:
all : target1 ... target100
target%d : target%d.pre
./script.py %d
我希望make
捕获变量(%d
),然后在整个规则中使用它。我可以想象,通过复杂地使用模式(%.xyz)和patsubst
可以做到这一点,但这将是非常笨拙和不可读的。
我正在考虑使用像Cheetah这样的模板引擎来编写一个模板(可以包含循环),然后将其转换为Makefile。有没有人有更好的想法或经验?
答案 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)