Co to jest? = W Makefile


97
KDIR ?= $(shell uname -r)

Jakie jest znaczenie ?=?

Mam rozumieć różnicę między :=, +=a =od innego wątku dostępnych w przepełnienie stosu, ale nie może znaleźć wytłumaczenie ?=.

Odpowiedzi:


141

?=wskazuje, aby ustawić KDIRzmienną tylko wtedy, gdy nie jest ustawiona / nie ma wartości.

Na przykład:

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

test:
    echo $(KDIR)

Wyświetliłoby „foo”

Podręcznik GNU: http://www.gnu.org/software/make/manual/html_node/Setting.html


1
Czy to oznacza, że ​​KDIR jest już zadeklarowany gdzieś w systemie?
kodowanie,

1
Nie musi tak być, ponieważ ?=można go użyć do zastosowania wartości domyślnej / rezerwowej do zmiennej, może pozwalać KDIRna ustawienie w środowisku.
Simon,

1
@Simon Zauważ, że argumenty wiersza poleceń, które mają już nadpisać zmienne Makefile, bez potrzeby ?=.
CMCDragonkai

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.