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

jac*_*hab 5 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

在命令行中,即使man页面说"添加到RPATH的路径没有被scons以任何方式转换",所以它应该在没有Literal()的情况下工作,我想.

那么如何在没有SCons的情况下添加包含$ TEXT的编译器标志来尝试将其扩展为变量?

谢谢.

小智 6

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

env['RPATH'] = Literal('lib:$$ORIGIN/../lib')
Run Code Online (Sandbox Code Playgroud)


jac*_*hab 5

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

    Env['ORIGIN'] = Literal('$ORIGIN')
    Env['RPATH'] = Literal('\'$ORIGIN/../lib:lib\'')
Run Code Online (Sandbox Code Playgroud)

如果您知道更合适/优雅的解决方案,请告诉我。