2017-02-02 7 views
0

静的パターンルールを使用してMakefileを作成していますが、TARGETSの各エレメントに対して現在のターゲット名(ここではステム '%')に割り当てられた変数が必要です。Make:静的パターンルールでターゲット固有の変数を設定する

TARGETS = a b c d 

all : $(TARGETS) 
$(TARGETS) : % : DIR = % 
$(TARGETS) : % : %_setup build 

a_setup : 
code for a 
b_setup : 
code for b 
... 
build 
code using "DIR = XX" previously configured 

が、ターゲット固有の変数DIRについてgnumake文句:

make: *** No rule to make target 'DIR', needed by 'a' 

それは静的なパターンルールと変数の逢引を混在させることは可能ですか?ありがとう!

+0

を、この特定のケースでは、あなたが 'TARGET使用することができます:DIR = $ @を'。 –

+0

これは決して行う必要はありません。静的パターンルールの要件は、ターゲットのリストを持つことです。そのため、通常のターゲット固有の変数をそのターゲットのリストと共に使用することができます。 – MadScientist

答えて

1

GNU makeマニュアルによれば、そういうことはできません。ただし、[email protected]を使用できます。あなたの例では、直接[email protected]を割り当てることができますが、より一般的に、あなたはpatsubstと組み合わせて[email protected]を使用することができます。

TARGETS = a b c d 
all : $(TARGETS) 
$(TARGETS) : DIR = $(patsubst %,%,[email protected]) 
$(TARGETS) : % : %_setup build 
     echo [email protected]: DIR:$(DIR) 
%_setup : 
     echo [email protected] 
build: 
     echo [email protected] 
関連する問題