KDIR ?= $(shell uname -r)
Ý nghĩa của ?=
là gì?Cái gì? = Trong Makefile
Tôi đã hiểu sự khác biệt giữa :=
, +=
và =
từ một chuỗi khác có sẵn trong Stack Overflow, nhưng không thể tìm thấy giải thích cho ?=
.
KDIR ?= $(shell uname -r)
Ý nghĩa của ?=
là gì?Cái gì? = Trong Makefile
Tôi đã hiểu sự khác biệt giữa :=
, +=
và =
từ một chuỗi khác có sẵn trong Stack Overflow, nhưng không thể tìm thấy giải thích cho ?=
.
?=
chỉ để đặt biến số KDIR
chỉ khi không được đặt/không có giá trị.
Ví dụ:
KDIR ?= "foo"
KDIR ?= "bar"
test:
echo $(KDIR)
Sẽ in "foo"
Nhờ Simon và R.T. để phản hồi nhanh chóng và chính xác.
Ngoài ra, tôi đã tìm thấy hướng dẫn GNU giải thích tất cả mọi thứ một cách chi tiết: http://www.gnu.org/software/make/manual/html_node/Setting.html
Liệu nó có nghĩa rằng KDIR đã được tuyên bố ở đâu đó trong hệ thống? – codedoc
Không nhất thiết, vì '? =' Có thể được sử dụng để áp dụng giá trị mặc định/dự phòng cho một biến, nó có thể cho phép đặt 'KDIR' trong môi trường. – Simon