Là gì? = Trong Makefile


95
KDIR ?= $(shell uname -r)

Ý nghĩa của là ?=gì?

Tôi đã hiểu sự khác biệt giữa :=, +==từ một chủ đề có sẵn trong Stack Overflow, nhưng không thể tìm ra lời giải thích cho ?=.

Câu trả lời:


133

?=cho biết chỉ đặt KDIRbiến nếu nó không được đặt / không có giá trị.

Ví dụ:

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

test:
    echo $(KDIR)

Sẽ in "foo"

Hướng dẫn sử dụng GNU: http://www.gnu.org/software/make/manual/html_node/Setting.html


1
Có nghĩa là KDIR đã được khai báo ở đâu đó trong hệ thống?
codedoc,

1
Nó không nhất thiết phải như vậy, 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 KDIRđược đặt trong môi trường.
Simon,

1
@Simon Lưu ý rằng các đối số dòng lệnh để thực hiện đã ghi đè các biến Makefile mà không cần ?=.
CMCDragonkai

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.