2012-01-14 108 views
1

我需要將特定於平臺的構建變量添加到我正在編寫的SCons腳本中,並據此執行此操作,據我所知,我需要在定義構建環境之前創建構造環境變量,以便我可以實際檢查平臺(env['PLATFORM']等)如果我這樣做,我必須追加變量後,但由於某種原因,它不工作。將「變量」附加到構造環境

env = Environment() 
vars = Variables() 
if env['PLATFORM'] == 'win32': 
    default_prefix = 'C:\Program Files\Example' 
elif env['PLATFORM'] == 'posix': 
    default_prefix = '/usr/local/example' 
vars.Add(PathVariable('prefix', 'installation path', default_prefix)) 
env.Append(variables = vars) 

print env['prefix'] # error 

我發現一個解決方法是隻創建環境再次

env = Environment(variables = var) 

,但我不知道是否有更好的方法,爲什麼追加不擺在首位的工作。

回答

2

我猜你正在尋找在這裏什麼,但它是這樣的:

Update(env,variables) 

使用此功能,更新的變量參數環境。

我認爲Append(variables = x)的原因是行不通的,即變量不是 是「dictionary」環境的一部分,實際上,如果您將變量傳遞到環境的構造函數中,在構造函數中,變量對象將更新環境。

+1

'vars.Update(env)'適合我。是額外構建變量的第二個參數嗎?再次感謝! – someguy 2012-01-17 18:41:31

+0

第二個變量用於自由函數。 – daramarak 2012-01-17 23:49:55

0

我通常從

platform = Environment()["PLATFORM"] 

獲取平臺,那麼我可以創建基於這方面的知識環境。

+0

謝謝。我認爲這稍微好一些,但是我想知道如果沒有再次創建環境,我還是不明白爲什麼追加不起作用。 – someguy 2012-01-16 17:52:04