2012-04-28 31 views
2

的問題如下: 我有這樣的定義一些變量的環境:附加價值,環境變量在構建器調用

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

在某些情況下,我需要調用一些額外的值的建設者其不應永久添加到環境中,以免不必要地污染環境。

一種方法是將額外值附加到構建器調用,方法是將其與環境值合併。

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

有沒有更優雅的方式來做到這一點?

回答

3

我這樣做是通過克隆的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) 
+0

謝謝!我認爲這兩種方式都比我的方法更好!另外第一個可以用於例如在SConscript中修改多個構建器調用。 – franz 2012-04-29 09:35:50