Was ist? = In Makefile


93
KDIR ?= $(shell uname -r)

Was bedeutet das ?=?

Ich habe den Unterschied zwischen verstanden :=, +=und =von einem anderen Thread in Stack - Überlauf, aber nicht in der Lage , um die Erklärung zu finden ?=.

Antworten:


129

?=Gibt an, dass die KDIRVariable nur gesetzt werden soll, wenn sie nicht gesetzt ist / keinen Wert hat.

Beispielsweise:

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

test:
    echo $(KDIR)

Würde "foo" drucken

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


1
Bedeutet das, dass KDIR bereits irgendwo im System deklariert ist?
Codedoc

1
Dies muss nicht der Fall sein, da ?=ein Standard- / Fallback-Wert auf eine Variable angewendet werden kann und KDIRmöglicherweise in der Umgebung festgelegt werden kann.
Simon

1
@Simon Beachten Sie, dass Befehlszeilenargumente Makefile-Variablen bereits überschreiben müssen, ohne dass dies erforderlich ist ?=.
CMCDragonkai

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.