什么是Makefile中的?=


95
KDIR ?= $(shell uname -r)

是什么意思?=

我已经明白之间的差别:=+==从堆栈溢出可用,但无法另一个线程来寻找解释?=

Answers:


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

1
它不是必须的,因为?=可以用于将默认值/后备值应用于变量,因此可以KDIR在环境中进行设置。
西蒙

1
@Simon请注意,make的命令行参数已经覆盖了Makefile变量,而无需使用?=
CMCDragonkai

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.