我有一个计算A.N
,其中每个步骤取决于上一步A.N-1
(第一步除外)以及另一个顺序计算结果B.N
。我想在make文件中表达这种关系:
A.001: calc.script B.001
$^ > $@
A.%: calc.script B.% A.(%-1) # (%-1) is pseudocode for idea
$^ > $@
我可以让第二条规则适用于A.002
,但它不适用于A.003
。我上面用于伪代码部分的方法是:
# ... A.001 rule
define dec = $(shell echo $(1)-1|bc|xargs printf '%03d') # want 3 digit #s
.SECONDEXPANSION:
A.%: calc.script B.% A.$$(call dec,$$*)
$$^ > $$@
这种方法有语言支持吗?我正在考虑使用$(foreach ..., $(eval $(call ...)))
构造来构建规则,但我更喜欢递归方法。
答案 0 :(得分:1)
来自the manual:
"No single implicit rule can appear more than once in a chain."
这是一个功能,而不是一个bug。你想要的那种递归在Make中是可能的,但Make并不适合它。