Что такое? = В Makefile


94
KDIR ?= $(shell uname -r)

В чем смысл ?=?

Я понял разницу между :=, +=и =из другого потока , доступного в переполнение стека, но не в силах найти объяснение ?=.

Ответы:


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 Обратите внимание, что аргументы командной строки, которые нужно сделать, уже переопределяют переменные Makefile без необходимости ?=.
CMCDragonkai

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.