附加价值对构建器调用环境变量(append value to environment variabl

2019-09-16 20:14发布

问题是如下:我有这样的定义一些变量的环境:

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

在某些情况下,我需要调用一个建设者不应该被永久添加到环境中不必要地污染它一些额外的价值。

一种方式是通过与环境的价值合并它追加额外价值的构建器调用。

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

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

Answer 1:

我这样做是通过克隆的env和追加到它,就像这样:

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

一个更Python(高效的)的方式做你正在做什么是使用Python list.extend()函数:

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


文章来源: append value to environment variable on builder call
标签: scons