将“变量”附加到构造环境

时间:2012-01-14 20:51:04

标签: scons

我需要将平台特定的构建变量添加到我正在编写的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 个答案:

答案 0 :(得分:2)

我猜你在这里寻找的是什么,但是就是这样:

Update(env,variables)

使用此功能可以使用变量参数更新环境。

我认为Append(variables = x)不起作用的原因是变量不是 实际上,如果将变量传递给环境的构造函数,在构造函数内部,变量对象将更新环境。

答案 1 :(得分:0)

我通常从

获取平台
platform = Environment()["PLATFORM"]

然后我可以根据这些知识创建环境。