如何在Makefile中使用算术处理模式规则?

如何在Makefile中使用算术处理模式规则?,makefile,Makefile,我的Makefile包含以下规则: result-n1 : inputs foo $^ result-n2 : result-n1 hashandmash $^ > $@ result-n3 : result-n2 hashandmash $^ > $@ # ... [~ 50 more lines omitted for clarity] result-n20 : result-n19 hashandmash

我的Makefile包含以下规则:

result-n1 : inputs
        foo $^

result-n2 : result-n1
        hashandmash $^ > $@

result-n3 : result-n2
        hashandmash $^ > $@

# ... [~ 50 more lines omitted for clarity]

result-n20 : result-n19
        hashandmash $^ > $@
我希望只有一个模式规则。这将更加清晰,并将避免硬编码限制在
20

但是你会怎么做呢?你怎么说
result-n
x取决于
result-n
x-1?我只看到不雅观的解决方案(比如用base 1命名我的文件,例如,
result niiiii


PS&FWIW,我使用GNU Make 3.81,你不能直接这样做。您可以为没有先决条件的
result-%
创建模式规则,然后可以单独声明先决条件:

result-n1: inputs
        foo $^

result-%:
        hashandmash $^ > $@

result-n2: result-n1
result-n3: result-n2
  ...
result-n20: result-n19

谢谢!这已经比我的示例Makefile更清晰、更简单了。