2012-01-14 13 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)の理由が働かないのは、変数が環境のコンストラクタに変数を渡す場合、実際には変数 " "の一部ではなく、コンストラクタ内で変数オブジェクトが環境を更新します。

+1

'vars.Update(env)'は私のために働きます。余分なビルド変数の2番目のパラメータはありますか?再度、感謝します! – someguy

+0

2番目の変数は空き関数です。 – daramarak

0

私は通常、私はこの知識に基づいた環境を作成することができます

platform = Environment()["PLATFORM"] 

からプラットフォームをフェッチします。

+0

ありがとうございました。これは少し上手ですが、環境を再作成せずに方法があるのだろうかと思いますが、なぜ追加が機能しないのかまだ分かりません。 – someguy

関連する問題