Makefile make:递归应用隐式规则(tail-)?

Makefile make:递归应用隐式规则(tail-)?,makefile,Makefile,我有一个计算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

我有一个计算
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…)
构造来构建规则,但我更喜欢递归方法。

来自:


这是一个特性,不是bug。在Make中可以实现您想要的递归,但Make并不真正适合它。

明白了-我一直在寻找那条清晰的语句,因为我在别处看到了这种行为的提示,但找不到它。谢谢-我将使用一个循环来构造规则,因为我有一个定义良好的最终索引。
"No single implicit rule can appear more than once in a chain."