คืออะไร = ใน Makefile


94
KDIR ?= $(shell uname -r)

ความหมายของ?=อะไร?

ฉันได้เข้าใจความแตกต่างระหว่าง:=, +=และ=จากหัวข้ออื่นที่มีอยู่ในกองมากเกิน ?=แต่ไม่สามารถหาคำอธิบายสำหรับ

คำตอบ:


132

?=ระบุว่าจะตั้งค่าKDIRตัวแปรก็ต่อเมื่อไม่ได้ตั้งค่า / ไม่มีค่า

ตัวอย่างเช่น:

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

test:
    echo $(KDIR)

คงจะพิมพ์คำว่า "foo"

คู่มือ GNU: http://www.gnu.org/software/make/manual/html_node/Setting.html


1
หมายความว่า KDIR ได้รับการประกาศในระบบแล้วหรือไม่?
codedoc

1
ไม่จำเป็นต้องเป็นเพราะ?=สามารถใช้เพื่อใช้ค่าเริ่มต้น / ทางเลือกกับตัวแปรได้จึงอาจอนุญาตให้KDIRตั้งค่าในสภาพแวดล้อมได้
Simon

1
@Simon โปรดทราบว่าอาร์กิวเมนต์บรรทัดคำสั่งที่จะทำการแทนที่ตัวแปร Makefile แล้วโดยไม่จำเป็นต้องใช้?=.
CMCDragonkai

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.