2011-12-20 85 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

做了一個更簡單的例子嗎?就像從一個.cpp文件構建一個庫一樣? – Tom 2011-12-20 19:52:34

+0

不,它沒有。無論如何,1個文件或很多,爲什麼一個AttributeError? – 2011-12-21 07:09:31

回答

3

通過設置工具屬性你告訴scons的只使用該工具的「g ++」。從外觀上看,它看起來不像「g ++」工具包含鏈接器,因此環境不再支持庫調用。如果你使用gcc作爲工具,你將包含完整的編譯器集合,所以它將用g ++編譯cpp文件。

正如你自己發現的,在大多數情況下可以完全省略這些工具,因爲Scons會嘗試爲你選擇正確的工具。但在其他情況下,可能需要告訴Scons先選擇另一種工具。 (像在這裏我更喜歡使用SCons使用的mingw-G ++代替VISUAL C++編譯C++代碼時視窗)然後

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

是必要的。

5

我不確定到底發生了什麼,但我認爲你可能會用工具= ['g ++']來破壞東西。

我想這可能工作:

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

哦,謝謝:)但我問IRC和省略工具參數一起使事情工作!不管怎麼說,還是要謝謝你 :) – 2011-12-21 18:15:23

相關問題