如何将新命令行变量添加到现有构造环境中?

时间:2012-03-16 21:41:29

标签: build scons

假设我有SConstruct将构建环境导出到子公司SConscript

Export('SConscript', 'env')

我希望SConscript将命令行变量foo插入env,以便我可以使用命令调用构建

scons foo=bar

这是可能的,还是必须支持将这样的命令行变量提供给环境的构造函数?

3 个答案:

答案 0 :(得分:1)

创建一个包含新变量的新Variables对象,然后更新环境in the subsidiary SConscript`:

Import('env')
vars = Variables()
vars.Add('foo', help='a command line variable named foo')
vars.Update(env)

答案 1 :(得分:1)

我不确定这个问题是否明确,但我的回答是。

Scons对命令行参数有很好的支持。在您的情况下使用函数ARGUMENTS.get('command_line_parameter', [default])。要将变量插入环境,只需使用索引运算符[]

示例:

env['foo'] = ARGUMENTS.get('foo') # if parameter not set, returns None

或默认值:

env['foo'] = ARGUMENTS.get('foo', 'bar')

您可以在scons指南中找到有关command-line parameters handling的更多信息。

答案 2 :(得分:0)

当使用变量更新命令行值时,您也可以将命令行值传递给环境:

vars.Update(env, ARGUMENTS)