2

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

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

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

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

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

有没有更优雅的方法来做到这一点?

4

1 回答 1

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)
于 2012-04-28T18:32:19.470 回答