Мне нужно добавить специфичные для платформы переменные сборки в сценарий 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)
но мне было интересно, есть ли лучший способ и почему его добавление не работает с самого начала.