2017-03-24 12 views
2

依存関係を持つターゲットを持つMakefileがあります。だから私はルックアップテーブルのように使用します:Makefileのターゲット依存関係における変数の置換

APPS = a b c 

dependency.lookup.a := x 
dependency.lookup.b := y 
dependency.lookup.c := z 

$(APPS): %: path/$(dependency.lookup.%).datafile 
    do something with $([email protected]) 

このメイクファイルは私に間違いを与えます。 ***ターゲット 'path/.datafile'を作成するルールはありません

制約:MinGWのみ。シェル/ MSYSは使用できません。 FreeBSDもサポートしています。

答えて

4

これはSecondary Expansion機能を使用する必要があります。

.SECONDEXPANSION: 
$(APPS): %: path/$$(dependency.loopup.$$*).datafile 
    @echo "[email protected] depends on $^" 

%.datafile : # Create one on demand for testing. 
    mkdir -p ${@D} 
    touch [email protected] 

出力:また

mkdir -p path/ 
touch path/x.datafile 
a depends on path/x.datafile 

を、定期的な依存関係を使用します。

a : path/x.datafile 
b : path/y.datafile 
c : path/z.datafile 

$(APPS): % : 
    @echo "[email protected] depends on $^" 

トップ3行のみdepen追加しますルールは別々に指定されます。出力は同じです。

+0

以下のジェネリックルールに依存性を追加/追加することはできますか? –

+0

@MohammadAzimはい、そうです。 –

+0

あなたは男です!助けてくれてありがとう。私の問題を完全に解決します。 –

関連する問題