GNU Makefile 変数割り当て =、?=、:=、+= の違いは何ですか? 質問する

GNU Makefile 変数割り当て =、?=、:=、+= の違いは何ですか? 質問する

Makefile で変数の割り当てが実際にどのように機能するかを明確に説明できる人はいますか。

違いは何ですか :

 VARIABLE = value
 VARIABLE ?= value
 VARIABLE := value
 VARIABLE += value

私は読んだセクションGNU Make のマニュアルに書いてありますが、まだ意味がわかりません。

ベストアンサー1

レイジーセット

VARIABLE = value

変数の通常の設定ですが、フィールドで指定された他の変数は、value宣言時の値ではなく、変数が使用される時点での値で再帰的に展開されます。

即時設定

VARIABLE := value

内部の値を単純に拡張する変数の設定 - 内部の値は宣言時に拡張されます。

存在しない場合は遅延設定

VARIABLE ?= value

変数に値がない場合のみ設定します。 はアクセスvalue時に常に評価されます。これは以下と同等です。VARIABLE

ifeq ($(origin VARIABLE), undefined)
  VARIABLE = value
endif

を参照してくださいドキュメンテーション詳細については。

追加

VARIABLE += value

指定された値を既存の値に追加する(変数が存在しない場合はその値に設定する)

おすすめ記事