Apa itu? = Di Makefile


94
KDIR ?= $(shell uname -r)

Apa arti dari ?=?

Saya telah memahami perbedaan antara :=, +=dan =dari utas lain yang tersedia di Stack Overflow, tetapi tidak dapat menemukan penjelasannya ?=.

Jawaban:


133

?=menunjukkan untuk menyetel KDIRvariabel hanya jika tidak disetel / tidak memiliki nilai.

Sebagai contoh:

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

test:
    echo $(KDIR)

Akan mencetak "foo"

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


1
Apakah ini berarti KDIR sudah dideklarasikan di suatu tempat di sistem?
codedoc

1
Tidak harus demikian, karena ?=dapat digunakan untuk menerapkan nilai default / fallback ke variabel, ini mungkin diizinkan KDIRuntuk disetel di lingkungan.
Simon

1
@Simon Perhatikan bahwa argumen baris perintah untuk membuat variabel Makefile sudah menimpa tanpa perlu ?=.
CMCDragonkai

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.