我需要将平台特定的构建变量添加到我正在编写的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)
但我想知道是否有更好的方法,为什么追加它不会起作用。
答案 0 :(得分:2)
我猜你在这里寻找的是什么,但是就是这样:
Update(env,variables)
使用此功能可以使用变量参数更新环境。
我认为Append(variables = x)不起作用的原因是变量不是 实际上,如果将变量传递给环境的构造函数,在构造函数内部,变量对象将更新环境。
答案 1 :(得分:0)
我通常从
获取平台platform = Environment()["PLATFORM"]
然后我可以根据这些知识创建环境。