2011-08-23 7 views
5

Quando chiamo il costruttore Program(Target, Source, CXXFLAGS=CompileFlags) il valore della stringa CompileFlags contiene -Wl,-rpath,lib:$ORIGIN/../lib causando l'espansione di $ ORIGIN nella stringa vuota, mentre deve essere preservato così com'è.

Ho tentato di sfuggire al simbolo del dollaro, aggiungendo virgolette singole all'interno, nulla aiuta.

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

anche non funziona: produce

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

a riga di comando, anche se la pagina man dice "i percorsi aggiunti RPATH non sono addestrato da scons in alcun modo" quindi dovrebbe funzionare anche senza Literal(), immagino.

Quindi, come posso aggiungere un flag del compilatore contenente $ TEXT senza SCONS cercando di espanderlo come variabile?

Grazie.

risposta

6

È possibile utilizzare doppie di dollari, in questo modo:

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

Grazie! Funziona. – jackhab

3

ho trovato questo può risolvere il problema di espansione

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

Ti prego, fatemi sapere se a conoscenza di più proprio/soluzione elegante senza.

Problemi correlati