2011-08-23 11 views
5

जब मैं एक निर्माता Program(Target, Source, CXXFLAGS=CompileFlags) कॉल करता हूं तो संकलनफ्लैग स्ट्रिंग के मान में -Wl,-rpath,lib:$ORIGIN/../lib होता है जिससे $ ORIGIN को खाली स्ट्रिंग में विस्तारित किया जाता है, जबकि इसे संरक्षित किया जाना चाहिए।

मैंने डॉलर के चिह्न से बचने की कोशिश की, अंदर एकल उद्धरण जोड़कर, कुछ भी मदद नहीं करता है।

env['RPATH'] = Literal('lib:$ORIGIN/../lib')

भी काम नहीं करता है: यह

g++ -o main -Wl,-rpath=lib:/../lib

का उत्पादन आदेश पंक्ति में भले ही आदमी पेज का कहना है "पथ RPATH किसी भी तरह से SCons से बदल नहीं कर रहे हैं करने के लिए जोड़ा" तो मुझे लगता है कि साहित्यिक() के बिना भी काम करना चाहिए, मुझे लगता है।

तो मैं एक चर के रूप में विस्तार करने की कोशिश कर रहे स्कैन के बिना $ टेक्स्ट युक्त एक कंपाइलर ध्वज कैसे जोड़ सकता हूं?

धन्यवाद।

उत्तर

6

आप इस तरह डबल डॉलर का उपयोग कर सकते:

env['RPATH'] = Literal('lib:$$ORIGIN/../lib') 
+0

धन्यवाद! यह काम करता हैं। – jackhab

3

मैंने पाया इस विस्तार समस्या

Env['ORIGIN'] = Literal('$ORIGIN') 
    Env['RPATH'] = Literal('\'$ORIGIN/../lib:lib\'') 

कृपया हल कर सकते हैं, मुझे पता है अगर आपको बिना अधिक उचित/सुरुचिपूर्ण समाधान के बारे में पता।

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