Makeでの変数の割り当てについては、:=および=演算子を参照してください。それらの違いは何ですか?
7
Makefile変数割り当ての
—
eldarerathis
Makeでの変数の割り当てについては、:=および=演算子を参照してください。それらの違いは何ですか?
回答:
これは、GNU Makeのドキュメントの6.2 The Variables of Variablesの セクションで説明されています。
つまり、で定義され:=た変数は1回展開されますが、で定義された変数=は使用されるたびに展開されます。
makeのメインジョブ)は、このような内部変数の解決よりもオーバーヘッドがはるかに大きいため、これは問題ではありません。
:=単純な割り当て式は、最初に発生したときに1回だけ評価されます。たとえばCC :=${GCC} ${FLAGS}、最初の出会いの間に評価されるとgcc -W、${CC}発生するたびにに置き換えられgcc -Wます。
=再帰的な割り当て式は、コード内で変数が検出されるたびに評価されます。たとえば、likeステートメントは、like CC = ${GCC} {FLAGS}アクション${CC} file.cが実行されたときにのみ評価されます。変数があればしかし、GCCすなわち再割り当てされ
GCC=c++、その後${CC}に変換されますc++ -W再割り当て後。
?=条件付き代入は、値がない場合にのみ変数に値を割り当てます
+=仮定しCC = gcc、その後追加オペレータが同じように使用されCC += -w
、その後CC、今の値を持ちますgcc -W
http://www.gnu.org/software/make/manual/make.html#Flavorsから:
=再帰的に展開される変数を定義します。 :=単純に展開された変数を定義します。