¿Qué es? = En Makefile


94
KDIR ?= $(shell uname -r)

Cuál es el significado de ?= ?

He entendido la diferencia entre :=, +=y =desde otro hilo disponible en desbordamiento de pila, pero no puede encontrar la explicación a ?=.

Respuestas:


132

?=indica establecer la KDIRvariable solo si no está establecida / no tiene un valor.

Por ejemplo:

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

test:
    echo $(KDIR)

Imprimiría "foo"

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


1
¿Significa que KDIR ya está declarado en algún lugar del sistema?
codedoc

1
No tiene por qué serlo, ya que ?=se puede usar para aplicar un valor predeterminado / de respaldo a una variable, puede permitir KDIRque se configure en el entorno.
Simon

1
@Simon Tenga en cuenta que los argumentos de la línea de comandos para hacer ya anulan las variables Makefile sin la necesidad de ?=.
CMCDragonkai

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.