SCons: предотвратить расширение $ TEXT в переменной конструкции - PullRequest
5 голосов
/ 23 августа 2011

Когда я вызываю конструктор 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 (), я думаю.

Так, как я могу добавить флаг компилятора, содержащий $ TEXT, без SCons, пытающегося расширить его как переменную?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 05 мая 2012

Вы можете использовать двойные доллары, как это:

env['RPATH'] = Literal('lib:$$ORIGIN/../lib')
3 голосов
/ 23 августа 2011

Я обнаружил, что это может решить проблему расширения

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

Пожалуйста, дайте мне знать, если вам известно более правильное / элегантное решение без.

...