2011-01-19 11 views
10

में नई लाइन के साथ रिक्त स्थान की जगह किसी को भी पता है कि कैसे एक Makefile में एक नई लाइन के लिए एक स्ट्रिंग में सभी रिक्त स्थान को बदलने के लिए (जीएनयू बनाने)makefile

उत्तर

19
text := hello a b c 

null := 
space := ${null} ${null} 
${space} := ${space}# ${ } is a space. Neat huh? 

define \n 


endef 

$(error [$(subst ${ },${\n},${text})]) 
+0

क्या आप वाकई अपने $ {} अंतिम पंक्ति –

+0

में हाँ, मैं इस मैक्रो लाइन 5 में परिभाषित कर रहे हैं '$ {space}' और '$ {}' दोनों ठीक काम करते हैं। – bobbogo

+0

यह मेरे लिए काम doesent –

3

यह शायद आसान है - क्लीनर और - करने के लिए sed साथ जीएनयू मेक के shell फ़ंक्शन का उपयोग करें बल्कि make के भीतर पूरी तरह यह करने के लिए कोशिश कर रहा से, प्रतिस्थापन करना है।

STRING := foo bar baz 
SPLIT := $(shell echo "${STRING}" | sed -e 's/ /\n/g') 

या, थोड़ा बेहतर, अपने खोल है अगर डिफ़ॉल्ट sh के बजाय bash:

STRING := foo bar baz 
SPLIT := $(shell sed -e 's/ /\n/g' <<< ${STRING}) 
+0

समस्या सिर्फ मैं इस के साथ लगता है कि यह अभी भी उपयोग करता खोल आदेशों जिसका अर्थ है कि यह ARG_MAX जो पहली जगह में मेरी समस्या यह थी का अनुपालन है। लेकिन यह मेरे पास अन्य समस्याओं का एक अच्छा समाधान है। धन्यवाद –

संबंधित मुद्दे