Makefile में भागने


87

मैं एक बदलाव में यह करने की कोशिश कर रहा हूँ और यह बुरी तरह से विफल रहता है:

M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')

तुम जानते हो क्यों? मुझे लगता है कि इसे बचने के साथ क्या करना है, लेकिन क्या और कहाँ?


5
यह कैसे विफल होता है? यह किस त्रुटि संदेश का उत्पादन करता है? आप इसे करने के लिए क्या उम्मीद करते हैं?

जवाबों:


163

यह डॉलर का चिह्न है, मेकफाइल्स में आपको $$एक डॉलर का चिह्न प्राप्त करना होगा:

M_ARCH := $(shell g++ -dumpmachine | awk '{split($$1,a,"-");print a[1]}')

133
हाँ, पैसे की कुल बर्बादी है: आपको $एक पाने के लिए दो लगाना होगा।
पी शेव्ड

8
@PavelShved मैंने एक बार मेक के लिए भुगतान नहीं किया है। :)
ट्रेवर हिक्की

किसी को भी इस उत्तर को खोज के भाग के रूप में, '#' वर्णों के साथ समस्याएँ हैं जो टिप्पणियों की शुरुआत के रूप में लिया जाता है। इन के लिए, आपको एक बैकस्लैश के साथ बचना चाहिए: "\ #"।
जिम मोंटे

16

जब आप इसे नीचे लाते हैं तो मेक काफी फिसड्डी होता है। यहाँ एक गैर-जागरण संस्करण है जो समान कार्य करता है:

space := $() #

M_ARCH := $(firstword $(subst -,$(space),$(shell g++ -dumpmachine)))

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