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

相关问题