2016-05-14 1 views
1

私はそれぞれのステップが前のステップA.N-1(最初のステップを除く)と別の逐次計算結果B.Nに依存する計算A.Nを持っています。私は、メイクファイルでこの関係を表現したいと思います:make:暗黙ルール、(tail-)再帰的に適用されますか?

A.001: calc.script B.001 
    $^ > [email protected] 

A.%: calc.script B.% A.(%-1) # (%-1) is pseudocode for idea 
    $^ > [email protected] 

私は2番目のルールは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,$$*) 
    $$^ > [email protected] 

このようなアプローチの言語サポートはありますか?私は、ルールを構築するために$(foreach ..., $(eval $(call ...)))構造を持っているだけを見ていますが、私は再帰的なアプローチを好むでしょう。 the manualから

答えて

1

"No single implicit rule can appear more than once in a chain." 

これは機能ではなく、バグです。あなたが望む再帰の種類はMakeで可能ですが、Makeは本当にそれに適していません。

+0

これは分かりました。私は、他の場所でのヒントを見ても、明確な声明を探していましたが、それは見つかりませんでした。ありがとうございます。私は定義済みの最終索引を持っているので、ルールを作成するためにループを使用します。 – Carl

関連する問題