0
GNU makeドキュメンテーションのUsing Variablesセクションを読んでいますが、複数回定義されたときにmakeの変数がどのように展開されるのか理解できませんでした。makefile変数を複数回定義する
参照、例えば、以下の短いメイクファイル:make
を実行している場合は、次の出力が得
.PHONY: run
run: a b
TARGET := a
$(TARGET):
echo $(TARGET)
touch [email protected]
TARGET := b
$(TARGET):
echo $(TARGET)
touch [email protected]
:
echo b
b
touch a
echo b
b
touch b
a
のターゲット、および自動があるようです変数[email protected]
は実際にはa
です。しかし、TARGET
という変数をエコーすると、ターゲット名でも同様にb
が表示されます...ここではどうなっていますか? 私は、この動作を明確にするために、ドキュメントにリンクすることをおすすめします。おそらく関連している
その他の質問:
make
が呼び出されたときに一度だけ読んメイクですか?- メークファイルを読み込んだら、後での名前をに展開していますか?
- メークファイルを読み込んだら、またはそれ以降にターゲットがに展開されていますか?注
:再帰的に展開変数を使用して上記の例の出力を変化させない(つまり=
に:=
を変えること、です)。
これをバックアップするためのドキュメントリファレンスはありませんが、1)はい、2)Makeがファイルを読み込むときに名前が展開されるので、最初のルールの名前は 'a'であり、ルールが実行されたときにのみレシピ(ルール内のコマンド)が展開され、その時点までには「ターゲット」が「b」である。 – Beta
@Betaそれは完全に正しいです、私はあなたがそれに答えるべきだと思います。 –