O que é? = No Makefile


97
KDIR ?= $(shell uname -r)

Qual é o significado de ?=?

Tenho entendido a diferença entre :=, +=e =de outro segmento disponível no Stack Overflow, mas incapaz de encontrar a explicação para ?=.

Respostas:


141

?=indica para definir a KDIRvariável apenas se não estiver definida / não tiver um valor.

Por exemplo:

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

test:
    echo $(KDIR)

Imprimiria "foo"

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


1
Isso significa que o KDIR já está declarado em algum lugar do sistema?
codedoc

1
Não precisa ser, uma vez que ?=pode ser usado para aplicar um valor default / fallback a uma variável, pode estar permitindo KDIRsua configuração no ambiente.
Simon

1
@Simon Observe que os argumentos da linha de comando para fazer já sobrescrevem as variáveis ​​do Makefile sem a necessidade de ?=.
CMCDragonkai

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.