これらはすべてMakefileに入れて実行することでわかります。あなたは、彼らが実際に取る値かを知りたい場合は、
$(info $(AAA))
を試すことができます(唯一の本当の問題はBBB_NAME
で(c)
であることに注意してください、あなたが他の関数に渡した場合、それは問題を引き起こす可能性があります。)
を
1つのトリッキーな部分は、=
と:=
(およびその他の代入演算子)の違いです。詳細はthe manualですが、基本的には:=
が右側を評価し、=
は左側が評価されるまで保持します。 EEEの値がSome other $(CCC) xxx
ている間DDD
の値は、今Some other value xxx
ある
CCC = value
DDD := Some other $(CCC) xxx
EEE = Some other $(CCC) xxx
を考えてみましょう。あなたがそれらを使用する場合は、どこか:
$(info $(DDD))
$(info $(EEE))
メイクは同じことに$(DDD)
と$(EEE)
を展開して、あなたは
Some other value xxx
Some other value xxx
を参照してくださいしかし、違いがあります。
CCC = value
DDD := Some other $(CCC) xxx
EEE = Some other $(CCC) xxx
DDD := $(DDD) and yyy # This is perfectly legal.
EEE := $(EEE) and yyy # Infinite recursion. Make will not allow this.
CCC = dimension
$(info $(DDD)) # Produces "Some other value xxx and yyy"
$(info $(EEE)) # Produces "Some other dimension xxx"
はそれは$を使用することがより正確です'$(info $(value AAA))'のように、(value ...)関数を呼び出すことができます。これは 'AAA'変数の内容を最初に展開することなく表示します。 '$(AAA)'のような参照を使うと値を展開してから表示します。 – MadScientist