Cos'è? = In Makefile


94
KDIR ?= $(shell uname -r)

Qual è il significato di ?=?

Ho capito la differenza tra :=, +=e =da un altro thread disponibili in Stack Overflow, ma incapace di trovare la spiegazione ?=.

Risposte:


132

?=indica di impostare la KDIRvariabile solo se non è impostata / non ha un valore.

Per esempio:

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

test:
    echo $(KDIR)

Stamperebbe "foo"

Manuale GNU: http://www.gnu.org/software/make/manual/html_node/Setting.html


1
Significa che KDIR è già dichiarato da qualche parte nel sistema?
codedoc

1
Non è necessario, poiché ?=può essere utilizzato per applicare un valore predefinito / fallback a una variabile, potrebbe consentire KDIRl'impostazione nell'ambiente.
Simon

1
@ Simon Nota che gli argomenti della riga di comando per fare già sovrascrivere le variabili Makefile senza la necessità di ?=.
CMCDragonkai

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.