当我调用构建器Program(Target, Source, CXXFLAGS=CompileFlags)
时,CompileFlags字符串的值包含-Wl,-rpath,lib:$ORIGIN/../lib
,导致$ ORIGIN扩展为空字符串,而它应保持原样。
我试图逃避美元符号,在里面添加单引号,没有任何帮助。
env['RPATH'] = Literal('lib:$ORIGIN/../lib')
也不起作用:它产生
g++ -o main -Wl,-rpath=lib:/../lib
在命令行中,即使手册页说“添加到RPATH的路径也没有被scons以任何方式转换”所以即使没有Literal()它也应该工作,我想。
那么如何在没有SCons的情况下添加包含$ TEXT的编译器标志来尝试将其扩展为变量呢?
感谢。
答案 0 :(得分:6)
您可以使用双倍美元,如下所示:
env['RPATH'] = Literal('lib:$$ORIGIN/../lib')
答案 1 :(得分:3)
我发现这可以解决扩展问题
Env['ORIGIN'] = Literal('$ORIGIN')
Env['RPATH'] = Literal('\'$ORIGIN/../lib:lib\'')
如果你没有意识到更合适/更优雅的解决方案,请告诉我。