2016-10-17 6 views
1

は、次の例のmakefileを与える:サブメイク展開しませんターゲット固有の変数は

export MY_COMMENT := 'Hello world' 

t1: MY_COMMENT += 'very much!' 
t1: 
    @echo $(MY_COMMENT) 

t2: MY_COMMENT += 'and I love you all' 
t2: 
    @$(MAKE) -e --no-print-directory t1 

コマンドラインで、私はmake t2入力した場合、予想される出力されました:代わりに

Hello world and I love you all very much! 

私が手:

Hello world and I love you all 

のターゲットに固有の変数もエクスポートするか、変数MY_COMMENTに追加しますか?私も、私はt2を作ることができる実現


は、その即時の問題を解決するたt1に依存するが、答えるとき、私はt2を持つことができないと仮定しt1に依存し、私はmakeが再びソリューションは

答えて

0

た呼び出す必要があります各ターゲット固有の変数にoverrideを使用します。だから私は、になってしまった:

export MY_COMMENT := 'Hello world' 

t1: override MY_COMMENT += 'very much!' 
t1: 
    @echo $(MY_COMMENT) 

t2: override MY_COMMENT += 'and I love you all' 
t2: 
    @$(MAKE) -e --no-print-directory t1 

そして、これは正しいoutpuitを与える