要生成基于OSG 的应用程序,你需要建立一个包括头文件和链接库文件的OSG 开发环境。OSG 运行时文件中包括了头文件和优化的链接库文件。如果想创建调试用的链接库,你需要下载并重新编译OSG 和OpenThreads 的源代码。OSG 和OpenThreads 的源代码均可以在OSG 维基网站的下载专区上取得。OSG维基网站还包括了如何生成OSG 的教学文档。
要正确编译基于OSG 的程序,首先要设置正确的头文件路径,以便编译器找到必要的头文件。在编译器的包含文件搜索路径中添加以下的目录:
<parent>/OpenSceneGraph/include
<parent>/OpenThreads/include
将<parent>替换为OpenSceneGraph 和OpenThreads 的最高层安装目录。使用Linux 系统的gcc 进行编译时,可以添加-I 参数。在Linux 系统上,<parent>通常会被替换为/usr/local/include,因此gcc 的命令行参数应当包含如下的格式:
-I/use/local/include/OpenSceneGraph/include
-I/usr/local/include/OpenThreads/include
如果使用Microsoft Visual Studio,可以打开Project Properties 对话框的C/C++选项卡,在Additional Include Directories 中添加适当的路径。
同样的,你也需要向链接器说明OSG 链接库的位置。在Linux 操作系统下,OSG 链接库通常位于/usr/local/lib,因此链接程序不需要再使用-L 参数就可以找到它们。
Microsoft Visual Studio 所需的链接库文件可以在如下的源代码目录中找到
<parent>/OpenSceneGraph/lib/win32
<parent>/OpenThreads/lib/win32
将这两个目录添加到Project Properties 对话框的Linker 选项卡,AdditionalLibrary Directories 选项。
最后,选择应用程序将要链接的OSG 链接库。正如1.6.3 节“组件”中叙述的,OSG 是由多个不同的库组成的,每个库都提供了不同的功能模块。一个简单的基于OSG 的程序往往需要使用osgViewer,osgDB,osgUtil 和osg 库,其gcc 命令参数如下:
-losgViewer –losgDB –losgUtil –losg
使用Microsoft Visual Studio 进行编译时,将库文件的名称添加到ProjectProperties 对话框的Linker 选项卡,Additional Dependencies 选项。在MicrosoftWindows 系统下,OSG 针对Debug 和Release 版本生成不同名字的链接库。
对于Release 版本的编译,添加如下的链接库名称:
osgViewer.lib osgDB.lib osgUtil.lib osg.lib
对于Debug 版本的编译,在文件扩展名前添加“d”:
osgViewerd.lib osgDBd.lib osgUtild.lib osgd.lib
上面所添加的链接库只是一个例子,程序中实际添加的库取决于程序中用到的OSG 功能模块。你的程序可能需要链接其它的库,例如osgText,osgShadow,osgGA 等。在Mac OS X 系统中,如果已经设定Xcode 使用OSG 框架,那么上述所有的工作均可以由操作系统自动进行处理。
如果你错误地设置了编译和链接的选项,你的程序在生成过程中可能会出现诸如“unable to open include file”,“unable to find library file”,“unresolved symbol”的错误。当你遇到这样的错误提示时,请仔细检查错误提示信息,并确定你已经正确设置了程序编译和链接的选项。