2010-03-04 13 views
56

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

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

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

+4

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

उत्तर

116

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

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

हाँ, पैसे की कुल बर्बादी है: आपको एक प्राप्त करने के लिए दो '$' रखना होगा। –

+6

@PavelShved मैंने कभी भी भुगतान करने के लिए भुगतान नहीं किया है। :) –

13

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

space := $() # 

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

all: 
    $(info $(M_ARCH)) 
संबंधित मुद्दे