2017-10-21 4 views
1

生成された変数をGNU Makeルール内の依存関係として使用することはできますか?私はGNU Makeの依存関係としての関数呼び出しを伴う変数

make 2-a 

を実行し、echo Aecho [email protected]を取得できるようにしたいと思い

A := 1 2 3 
B := a b c 
C := $(foreach X,$(A),$(foreach Y,$(B),$X-$Y)) 

a: 
    echo A 

b: 
    echo B 

$(C) : $(word 2,$(subst -, ,[email protected])) 
    echo [email protected] 

を行うにしようとしています、つまり、私は$(word 2,$(subst -, ,[email protected]))は、依存関係のリストとして評価したいです。ただし、ルールが一致する前に評価されているようです。

外部プログラムなしで、関数呼び出しの変数を依存関係として持つことは可能ですか? GNUmakeの

答えて

2

神々は、あなたの欲望を予見し、.SECONDEXPANSIONを実装:

A := 1 2 3 
B := a b c 
C := $(foreach X,$(A),$(foreach Y,$(B),$X-$Y)) 

a: 
    echo A 

b: 
    echoechoecho B 

.SECONDEXPANSION: 
$(C) : $$(word 2,$$(subst -, ,[email protected])) 
    echo [email protected] 

このラベルの後に表示されるすべてのルールは、あなたのような自動変数を使用できることを意味し、その前提リストの2番目の拡張の対象となります[email protected]は、最初の展開時には未定義です。 あなたは、$(つまり、それを$$とする)をすべて引用する必要があるだけで、前提条件リストの2回目の展開中に有効になることを考慮する必要があります。

関連する問題