问题如下: 我有一个环境,其中一些变量定义如下:
env = Environment(CPPPATH=['#/include'])
在某些情况下,我需要使用一些额外的值来调用构建器,这些值不应永久添加到环境中,以免对其造成不必要的污染。
一种方法是通过将额外值与环境的值合并,将额外值附加到构建器调用。
env.Object('test.c', CPPPATH=['#/some_other_include_path']+env['CPPPATH'])
有更优雅的方式吗?
答案 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)