it-roy-ru.com

Что есть? = В Makefile

KDIR ?= $(Shell uname -r)

Что означает ?=?

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

53
codedoc

?= указывает на установку переменной KDIR, только если она не установлена ​​/ не имеет значения.

Например:

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

test:
    echo $(KDIR)

Напечатал бы "фу"

82
Simon

Благодаря Саймону и Р.Т. за их быстрый и правильный ответ.

Кроме того, я нашел GNU руководство, которое объясняет все подробно: http://www.gnu.org/software/make/manual/html_node/Setting.html

5
codedoc