2011-12-20 2 views
3

나는 scons에 익숙하지 않고 파일을 만들려고 노력하고있다. 나는 리눅스를 사용 중이며 파이썬을 잘 사용한다. 여기 내 샘플 SConstruct 파일입니다 :scons는 "라이브러리와 같은 속성이 없습니다"라고 외칩니다.

는 의도가 표시 CPP 파일에서 '.o 인'을 구축하는 것입니다
vstPlugName = 'again' 
vstSDKDir = '/home/yati/Projects/Sound/vstsdk2.4' 

env = Environment(CPPPATH=vstSDKDir, tools=['g++']) 
env['CCFLAGS'] = ['-Wall -O3'] 

src_dir = vstSDKDir + '/public.sdk/source/vst2.x' 

env.Library(vstPlugName, [ 
          vstPlugName + '.cpp', 
          src_dir + '/audioeffect.cpp', 
          src_dir + '/audioeffectx.cpp', 
          src_dir + '/vstplugmain.cpp' 
          ]) 

- 나는 env.Object()를 시도했지만 "는 오브젝트 파일을 주어진 여러 소스를 말하는 예외가 발생 ... "- 이해할 수 있습니다.

scons: Reading SConscript files ... 
AttributeError: 'SConsEnvironment' object has no attribute 'Library': 
File "/home/yati/Projects/Sound/development/again/source/SConstruct", line 10: 
env.Library(vstPlugName, [ 

도와주세요 : 나는 위의 SConstruct 스크립트에 대한 scons를 실행할 때하지만,이 얻을. 또한 리눅스 용 스콘에 대한 간략한 소개가 있습니까? 나는 전체 맨 페이지 나 공식 문서들을 갈 시간이 없다.

+0

훨씬 간단한 예제가 작동합니까? 하나의 .cpp 파일로 라이브러리를 만드는 것 – Tom

+0

아니요, 그렇지 않습니다. 어쨌든, 1 개의 파일 또는 많은 것, 왜 AttributeError인가? –

답변

3

는 도구를 사용하는 방법이 SCons는 말할 속성 "g을 ++". 이 모양으로 보면 "g ++"도구에 링커가 포함 된 것처럼 보이지 않으므로 환경에서 더 이상 라이브러리 호출을 지원하지 않습니다. gcc를 도구로 사용하면 g ++로 cpp 파일을 컴파일 할 수 있도록 전체 컴파일러 모음을 포함하게됩니다.

Scons가 올바른 도구를 선택하기 때문에 대부분의 경우 도구를 완전히 생략 할 수 있습니다. 그러나 다른 경우에는 Scons가 다른 도구보다 먼저 하나의 도구를 선호하도록 요구하는 것이 필요할 수도 있습니다. (마찬가지로 C++ 코드를 컴파일 할 때 나는 ++ 대신의 Visual C++와 Mingw-g를 사용하는 SCons는 선호 창에) 그런 다음

env = Environment(tools=['mingw']) 

필요하다.

5

나는 정확히 무슨 일이 일어나고 있는지 모르겠다. 그러나 나는 너가 도구들로 물건을 clobbering하고 있다고 생각한다. [ 'g ++'].

나는이 작업을 거라고 생각 : 도구를 설정하여

env = Environment(CPPPATH=vstSDKDir, tools=['default', 'g++']) 
+0

오 고마워 :)하지만 IRC에 물었고 도구 매개 변수를 생략하면 모든 것이 작동하게되었습니다! 어쨌든 고마워 :) –

관련 문제