SCons:防止构造变量中的$ TEXT扩展

时间:2011-08-23 10:28:19

标签: scons

当我调用构建器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的编译器标志来尝试将其扩展为变量呢?

感谢。

2 个答案:

答案 0 :(得分:6)

您可以使用双倍美元,如下所示:

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

答案 1 :(得分:3)

我发现这可以解决扩展问题

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

如果你没有意识到更合适/更优雅的解决方案,请告诉我。