2011-08-23 42 views
5

Khi tôi gọi người xây dựng Program(Target, Source, CXXFLAGS=CompileFlags) giá trị của chuỗi CompileFlags chứa -Wl,-rpath,lib:$ORIGIN/../lib khiến $ ORIGIN được mở rộng thành chuỗi rỗng, trong khi nó phải được giữ nguyên như cũ.

Tôi đã cố gắng thoát dấu đô la, thêm dấu nháy đơn bên trong, không có gì hữu ích.

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

cũng không hoạt động: nó tạo ra

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

trong dòng lệnh mặc dù man page nói "các đường dẫn bổ sung vào rPath không biến đổi bởi scons dưới mọi hình thức" vì vậy nó phải làm việc ngay cả khi không có Literal(), tôi đoán vậy.

Vậy làm cách nào tôi có thể thêm cờ trình biên dịch có chứa $ TEXT mà không có SCON cố gắng mở rộng nó dưới dạng biến?

Cảm ơn.

Trả lời

6

Bạn có thể sử dụng USD tăng gấp đôi, như thế này:

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

Cảm ơn! Nó hoạt động. – jackhab

3

Tôi thấy điều này có thể giải quyết vấn đề mở rộng

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

Xin vui lòng, cho tôi biết nếu bạn nhận thức/giải pháp thanh lịch thích hợp hơn mà không.

Các vấn đề liên quan