2011-08-23 16 views
5

Cuando llamo a un constructor Program(Target, Source, CXXFLAGS=CompileFlags), el valor de la cadena CompileFlags contiene -Wl,-rpath,lib:$ORIGIN/../lib provocando que $ ORIGIN se expanda a una cadena vacía, mientras que debe conservarse como está.

Intenté escapar del signo de dólar, agregué comillas simples en el interior, nada ayuda.

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

también no funciona: produce

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

en línea de comandos, aunque la página hombre dice "los caminos añaden a rPath no son transformados por scons de ninguna manera" por lo que se supone que debe funcionar incluso sin Literal(), supongo.

Entonces, ¿cómo puedo agregar un indicador de compilación que contenga $ TEXT sin SCons tratando de expandirlo como una variable?

Gracias.

Respuesta

6

Puede utilizar dobles de dólares, así:

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

Gracias! Funciona. – jackhab

3

He encontrado esto puede resolver el problema de la expansión

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

Por favor, hágamelo saber si usted consciente de la solución más adecuada/elegante sin.

Cuestiones relacionadas