मेकफाइल में क्या है? =


95
KDIR ?= $(shell uname -r)

का अर्थ क्या है ?= ?

मैं के बीच अंतर को समझ लिया है :=, +=और =एक और धागा स्टैक ओवरफ़्लो में उपलब्ध है, लेकिन असमर्थ से के लिए विवरण को खोजने के लिए ?=

जवाबों:


133

?= सेट करने के लिए इंगित करता है KDIRवैरिएबल केवल अगर यह सेट नहीं है / एक मूल्य नहीं है।

उदाहरण के लिए:

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

test:
    echo $(KDIR)

"फू" प्रिंट करेगा

GNU मैनुअल: http://www.gnu.org/software/make/manual/html_node/Setting.html


1
क्या इसका मतलब है कि केडीआईआर पहले से ही सिस्टम में कहीं घोषित है?
कोडेडोक

1
इसका कोई मतलब नहीं है, क्योंकि ?=एक चर के लिए डिफ़ॉल्ट / फ़ॉलबैक मूल्य को लागू करने के लिए इस्तेमाल किया जा सकता है, यह KDIRपर्यावरण में सेट होने की अनुमति दे सकता है।
साइमन

1
@ साइमन ध्यान दें कि कमांड लाइन तर्क मेकफाइल वेरिएबल्स को जरूरत के बिना पहले से ही ओवरराइड करने के लिए करता है ?=
CMCDragonkai

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.