Makeでの変数の割り当てについては、:=および=演算子を参照してください。それらの違いは何ですか?
これについては、GNU Makeドキュメントの 6.2 The Two Flavors of Variables というタイトルのセクションで説明されています。
つまり、:=
で定義された変数は一度展開されますが、=
で定義された変数は使用されるたびに展開されます。
単純な代入式は、最初の出現時に一度だけ評価されます。たとえば、最初の出会いでCC :=${GCC} ${FLAGS}
がgcc -W
と評価された場合、${CC}
が発生するたびにgcc -W
に置き換えられます。
再帰的な代入式は、コード内で変数が検出されるたびに評価されます。たとえば、CC = ${GCC} {FLAGS}
などのステートメントは、${CC} file.c
などのアクションが実行されたときにのみ評価されます。ただし、変数GCC
が再割り当てされる場合、つまりGCC=c++
の場合、${CC}
は再割り当て後にc++ -W
に変換されます。
条件付き割り当ては、値がない場合にのみ変数に値を割り当てます
CC = gcc
と仮定すると、CC += -w
のように追加演算子が使用されます
その後、CC
の値はgcc -W
になります
詳細については、これらをご覧ください tutorials
http://www.gnu.org/software/make/manual/make.html#Flavors から:
=
は、再帰的に展開される変数を定義します。 :=
は、単純に展開される変数を定義します。