Добавление переменных в конструкторскую среду - PullRequest
1 голос
/ 15 января 2012

Мне нужно добавить специфичные для платформы переменные сборки в сценарий SCons, который я пишу, и для этого, насколько я знаю, мне нужно создать конструкторскую среду перед определением переменных, чтобы я мог на самом деле проверить платформа (env['PLATFORM'] и т. д.). Если я сделаю это, мне придется потом добавить переменные, но по какой-то причине это не работает.

env = Environment()
vars = Variables()
if env['PLATFORM'] == 'win32':
    default_prefix = 'C:\Program Files\Example'
elif env['PLATFORM'] == 'posix':
    default_prefix = '/usr/local/example'
vars.Add(PathVariable('prefix', 'installation path', default_prefix))
env.Append(variables = vars)

print env['prefix'] # error

Я обнаружил, что обходной путь - просто создать среду снова

env = Environment(variables = var)

но мне было интересно, есть ли лучший способ и почему его добавление не работает с самого начала.

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Я предполагаю, что вы ищете здесь, но вот что:

Update(env,variables)

Используя эту функцию, вы обновляете окружение с помощью аргумента переменных.

Я думаю, что причина дляAppend (variable = x) не работает, так как переменные не являются частью среды «словаря», фактически, если вы передадите переменные в конструктор среды, внутри конструктора объект переменных обновит среду.

0 голосов
/ 16 января 2012

Я обычно выбираю платформу с

platform = Environment()["PLATFORM"]

, затем я могу создать среду на основе этих знаний.

...