2011-12-20 9 views
3

私はsconsには新しく、いくつかのファイルを無駄に構築しようとしています。私はLinux上でPythonをよく使っています。ここに私のサンプルSConstructファイルがあります:sconsは「ライブラリのような属性はありません」と叫ぶ!

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' 
          ]) 

意図が示さcppのファイルから「の.o」を構築することである - 私は(env.Objectを試してみました)が、それは、複数のソースは、オブジェクトファイルに指定された」という例外が発生します... " - わかりやすい。私は上記のSConstructスクリプトのsconsを実行したときしかし、その後、私はこれを取得:

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, [ 

助けてください。また、Linux用のsconsに関する簡単な、まともな紹介がありますか?私は実際にマンページ全体や公式ドキュメントを読む時間はありません。

+0

もっと簡単な例がありますか? 1つの.cppファイルからライブラリを作成するのと同じですか? – Tom

+0

いいえ、そうではありません。とにかく、1ファイルまたはそれ以上、なぜAttributeError? –

答えて

3

ツールを設定することは、あなたが唯一のツール「のG ++」を使用するsconsのを教え属性。見た目では、 "g ++"ツールにリンカーが含まれているように見えないので、環境はもはやライブラリ呼び出しをサポートしません。 gccをツールとして使用する場合は、完全なコンパイラコレクションをインクルードし、g ++でcppファイルをコンパイルします。

ほとんどの場合、ツールを完全に省略することは可能ですが、Sconsは正しいツールを選択しようとします。しかし、他のケースでは、Sconsに別のツールを優先させるように指示する必要があるかもしれません。 (同様に、C++コードをコンパイルするとき、私は++代わりのVisual C++ mingwの-Gを使用するSConsはを好むWindowsの場合)には、次に

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

必要です。

5

私は何が起きているのかはっきりしませんが、あなたはツール= ['g ++']で物事を壊すかもしれないと思います。

私は、これはうまくいくかもしれないと思う:

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

ああありがとう:)しかし、私はIRCで尋ねられ、ツールのパラメータを省略するとすべてのことができました!とにかくありがとう :) –

関連する問題