OSG3.4.0+VS2010+WIN10编译及二次开发环境搭建

来源:互联网 发布:mac用minila 编辑:程序博客网 时间:2024/05/22 07:53

         这是我的第一篇博文,最近在学习QGIS和OSG,在开源软件编译及环境搭建中遇到了一系列的问题,因此也查询学习了网上的很多教程,在几次试验后终于完成了源码的编译和环境配置,写下这篇博文,希望对大家学习如何搭建OSG开发环境有所帮助。

       首先介绍一下我的系统环境:我是在WIN10系统下使用VS2010的编译器完成源码的编译,因为OSG有Qt模块,在CMAKE时需要选择选择qmake,我这里编译使用的QT版本是qt4.8.7-vs2010。


      1、相关文件

OSG源码:OpenSceneGraph-3.4.0.zip

OSG第三方库:3rdParty_VC10_x86_x64.zip

OSG数据包:OpenSceneGraph-Data-3.4.0.zip

CMake版本:我使用的CMake3.9.3(当前最新版本:cmake-3.10.0-rc2-win32-x86.msi

        其中3rdParty_VC10_x86_x64.zip下载解压后有两个版本x86和x64,由于使用的vs2010是32位,且编译时选择编译32位版本,所以源码编译时第三方库选择x86版本,x64版本可以删除。


       2、编译准备

       1)在E盘新建一个OSG文件夹,将上面下载的三个文件解压,解压后的文件夹分别改为:OpenSceneGraph-3.4.03rdPartydata并放到OSG文件夹下,将3rdParty文件夹下x64版本删除,在OpenSceneGraph-3.4.0目录下新建build文件夹,之后CMake编译都在此文件夹下进行,如图所示:

        


         (2)打开CMake(cmake-gui),将OpenSceneGraph-3.4.0文件夹下的CMakeLists.txt文件拖到CMake中,然后更改编译路径,如下图所示:


 


         (3)点击Configure按钮,然后在弹出的对话框中选择Visual Studio 102010Use default native compilers,如下图所示:



         (4)点击Finish后,CMake会出现大片红色警告,不用担心,这里的错误大多是路径问题,我们只需要依据Name修改Value正确的路径即可,注意,此处如果路径配置有问题,编译可能会不能通过,或者编译后缺少第三方库等不能打开文件如png等:



         (5)修改ACTUAL_3RDPARTY_DIR目录为:E:/OSG/3rdParty/x86,注意:如果不更改目录而由CMake默认,许多其他的第三方插件可能会不能使用,比如不能读取图片和字体等。然后修改CMAKE_INSTALL_PREFIX安装目录,在后续的编译中会将编译结果(binincludelib)拷到CMAKE_INSTALL_PREFIX指定的地方,如果这个构建出错,就需要我们手工拷贝库文件头文件等,这里指定目录:E:/OSG/OpenSceneGraph。修改QT_QMAKE_EXECUTABLE的路径到qmake.exe的路径,在本机下为:E:/QT/4.8.7/bin/qmake.exe,并且将BUILD_OSG_EXAMPLES打上对勾,配置如下图所示:



 


(6)点击Configure之后又出现一堆问题,不要紧,因为这些库不影响我们进行一般的三维开发,只要将BUILD_MFC_EXAMPLEAdvanced打上对勾,如下图所示:



         (7)再点击configure,就没有报错了,如图:



(8)最后点击Generate按钮,即在E:\OSG\OpenSceneGraph-3.4.0\build文件夹下可生成相应的工程,如下图所示:



 


3、编译工程

3.1、使用vs2010打开项目文件OpenSceneGraph.sln,使用vs的生成—批生成工具对项目进行编译,选择ALL_BUILD的Debug和Release,如下图所示,然后选择生成:



       3.2、点击生成之后就进入了编译,整个编译过程大概要4个小时,视电脑配置而定,如下图所示,编译全部成功:



       3.3、编译完成之后再次打开批处理,将ALL_BUILD的Debug和Release对勾去掉,然后选择INSTALL的Debug和Release版本,点击生成,这个编译会很快,如下图所示:



至此,整个OSG源码编译的过程就完成了。


4、环境配置

 

如果上述CMAKE_INSTALL_PREFIX指定正确,编译后会在:E:/OSG下新建OpenSceneGraph文件夹,编译生成的binincludelib会被拷贝到此文件夹下,为了方便使用我们编译的开发包,将OSG下的data文件夹移动到OpenSceneGraph目录下。我们要使用这些库文件头文件进行二次开发,只需正确的设置环境变量并配置工程附加依赖库即可。

 

4.1、添加环境变量(此电脑-属性-高级系统设置-高级-环境变量)

新建系统变量:OSG_FILE_PATH:E:\OSG\OpenSceneGraph\data

追加系统变量:PATHE:\OSG\ OpenSceneGraph\bin

4.2、项目中配置OSG开发库

4.2.1使用VS2010新建C++ WIN32控制台程序,添加一个cpp文件。

4.2.2右键项目,选择“属性”,选择“VC++目录,在包含目录添加:E\OSG\OpenSceneGraph \include在库目录添加:D\OSG\OpenSceneGraph \lib



4.2.3打开项目属性的链接器-输入里,附加依赖项加上: OpenThreadsd.libosgd.libosgDBd.libosgUtild.libosgGAd.libosgViewerd.lib
osgTextd.lib ,在lib文件夹内,每一个库文件均有一个release版本和一个debug版本,库文件名后面带d的如osgd.libdebug版本,不带d的如osg.librelease版本。



4.2.4cpp文件内输入以下代码测试:

#include <osgViewer/Viewer>#include <osgDB/ReadFile> int main(int argc, char **argv){  osg::ref_ptr<osg::LightSource> ls= new osg::LightSource();    osg::ref_ptr< osg::Light> lt = new osg::Light;      lt->setLightNum(0);      lt->setPosition(osg::Vec4(1.0, -1.0, -1.0, 0));      lt->setAmbient(osg::Vec4(0.2, 0.2, 0.2, 1.0));      lt->setDiffuse(osg::Vec4(1.0, 1.0, 1.0, 1.0));      osgViewer::Viewer viewer;    viewer.getCamera()->setClearColor(osg::Vec4(0,1,1,1));    viewer.setSceneData(osgDB::readNodeFile("glider.osg"));    viewer.setUpViewInWindow(300,100,800,600);   viewer.setLight(lt);    returnviewer.run();} 


编译成功运行:



以上就是OSG编译到二次开发环境配置的全过程。