2012-01-14 78 views
1

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

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

Update(env,variables) 

使用此功能,更新的变量参数环境。

我认为Append(variables = x)的原因是行不通的,即变量不是 是“dictionary”环境的一部分,实际上,如果您将变量传递到环境的构造函数中,在构造函数中,变量对象将更新环境。

+1

'vars.Update(env)'适合我。是额外构建变量的第二个参数吗?再次感谢! – someguy 2012-01-17 18:41:31

+0

第二个变量用于自由函数。 – daramarak 2012-01-17 23:49:55

0

我通常从

platform = Environment()["PLATFORM"] 

获取平台,那么我可以创建基于这方面的知识环境。

+0

谢谢。我认为这稍微好一些,但是我想知道如果没有再次创建环境,我还是不明白为什么追加不起作用。 – someguy 2012-01-16 17:52:04