Makefileの?=とは


95
KDIR ?= $(shell uname -r)

の意味は?=何ですか?

:=+==Stack Overflowで利用可能な別のスレッドとの違いを理解しましたが、の説明が見つかりません?=

回答:


133

?=KDIR変数が設定されていない/値がない場合にのみ変数を設定することを示します。

例えば:

KDIR ?= "foo"
KDIR ?= "bar"

test:
    echo $(KDIR)

「foo」を出力します

GNUマニュアル:http//www.gnu.org/software/make/manual/html_node/Setting.html


1
KDIRがシステムのどこかですでに宣言されているということですか?
codedoc 2014

1
?=デフォルト/フォールバック値を変数に適用するために使用できるため、そうである必要はありませんKDIR。環境で設定できる可能性があります。
サイモン

1
@Simon作成するコマンドライン引数は、?=。を必要とせずにMakefile変数を既にオーバーライドしていることに注意してください。
CMCDragonkai 2018

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.