2012-01-14 4 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

난 당신이 여기를 찾고 있지만이에게 있습니다 무엇을 추측하고있다.

나는 Append (variables = x)가 작동하지 않는 이유는 변수가 환경의 구성자에 변수를 전달할 경우 실제로 "사전"환경의 일부가 아니라는 것입니다. 생성자 내에서 변수 객체가 환경을 업데이트합니다.

+1

'vars.Update (env)'가 저에게 효과적입니다. 추가 빌드 변수의 두 번째 매개 변수는 무엇입니까? 다시 한 번 감사드립니다! – someguy

+0

두 번째 변수는 자유 함수 용입니다. – daramarak

0

나는 보통 나는이 지식을 바탕으로 환경을 만들 수 있습니다

platform = Environment()["PLATFORM"] 

에서 플랫폼을 가져옵니다. 당신이 변수 인수와 함께 환경을 업데이트이 기능을 사용

Update(env,variables) 

:

+0

감사합니다. 그것은 제가 생각한 것보다 약간 낫지 만 환경을 다시 만들지 않는 방법이 있는지 궁금합니다. 왜 추가가 작동하지 않는지 아직 이해하지 못합니다. – someguy