Що таке? = У Makefile


95
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.