在构建器调用上将值附加到环境变量

时间:2012-04-28 17:17:41

标签: scons

问题如下: 我有一个环境,其中一些变量定义如下:

env = Environment(CPPPATH=['#/include'])

在某些情况下,我需要使用一些额外的值来调用构建器,这些值不应永久添加到环境中,以免对其造成不必要的污染。

一种方法是通过将额外值与环境的值合并,将额外值附加到构建器调用。

env.Object('test.c', CPPPATH=['#/some_other_include_path']+env['CPPPATH'])

有更优雅的方式吗?

1 个答案:

答案 0 :(得分:3)

我这样做是通过克隆env并附加到它上面的,就像这样:

clonedEnv = env.Clone()
clonedEnv.Append(CPPPATH=['#anotherPath'])
clonedEnv.Object('test.c')

一种更加pythonic(和有效)的方法来做你正在做的事情就是使用python list.extend()函数:

cpppath = ['path1', 'path2']
cpppath.extend(env['CPPPATH'])
env.Object('test.c', CPPPATH = cpppath)