OpenSceneGraph学习笔记

VirtualPlanetBuilder编译方法

转自:http://www.boyunjian.com/do/article/snapshot.do?uid=7327932418831703800

一、下载安装TortoiseSVN客户端

  VirtualPlanetBuilder源代码需要通过TortoiseSVN客户端来获取。TortoiseSVN客户端下载地址 http://tortoisesvn.net 。网页提供了完整的客户端安装文件,以及语言包。笔者电脑操作系统为Windows 7(32位),下载了笔者操作系统相对应的客户端,同时下载了简体中文语言包。安装TortoiseSVN客户端,以及语言包。安装过程很简单,直接默认安装即可。 
   

二、通过TortoiseSVN客户端获取VirtualPlanetBuilder源代码


  在任意文件夹单击鼠标右击,然后点击SVN Checkout...,在版本库URL中输入http://www.openscenegraph.org/svn/VirtualPlanetBuilder/trunk ,点击确定。 
    
    
    
  下载的文件夹中文件如图所示: 
    
  打开NEWS.txt文件,查看VirtualPlanetBuilder版本。 
    
   注意:编译VirtualPlanetBuilder的时候,VirtualPlanetBuilder版本和OSG版本一定要兼容,否则会出现编译问题。通过TortoiseSVN下载的这个版本,可以和OpenSceneGraph-3.0.1完美兼容。 
   OpenSceneGraph-3.0.1的编译方法,可以参考笔者的另一篇博客: OpenSceneGraph学习笔记(一):OpenSceneGraph编译方法 

三、编译OpenSceneGraph版本对应版本的GDAL


  笔者在上一篇博客编译OpenSceneGraph-3.0.1的时候,并没有编译GDAL。这里从GDAL的官方网站( http://www.gdal.org )下载最新版本的源代码包,然后进行编译即可。也可下载官方编译好的GDAL包直接使用。您需要下载和您操作系统、编译器相对应的源代码包,笔者下载的源代码包为release-1600-gdal-mapserver-src.zip,同时也下载了其他文件,但是和本篇内容无关。 
    
  源代码在文件release-1600-gdal-mapserver-src.zip之中,将源代码解压即可。这里我们只需要解压压缩包release-1600-gdal-mapserver-src.zip中的gdal文件夹。将解压的文件夹命名为gdal-20130222。 

解压结果如图所示: 
    
  用Microsoft Visual Studio 2010打开文件makegdal10.sln,运用Microsoft Visual Studio 2010批生成工具编译。 
    
    
  
  GDAL 编译完成后的文件存放于 C:warmerdald ,包含文件 bin,data,html 三个子文件夹。将该文件夹拷贝到gdal-20130222文件夹中。对比之前的文件,可以看到gdal-20130222文件夹中,同时也生成了lib文件等。 
    
   注意:如果按照笔者 OpenSceneGraph学习笔记(一):OpenSceneGraph编译方法 文章中的方法,直接下载官方编译好的文件,需要在文件包中查找GDAL的版本,和编译相对应版本的lib文件。 
   GDAL文件的版本查找方法如下: 
   解压下载好的压缩包,在如图所示的路径中找到文件,文件后缀即gdal的版本。则下载gdal18的源代码进行编译即可。同时可以查看笔者之前编译的gdal版本为1.10.0.0。 
    
   

四、整理 VirtualPlanetBuilder编译代码


  新建名为VirtualPlanetBuilder-20130222的文件夹,这是笔者的一个习惯,将文件夹的后缀加上时间,方便日后查看。 
  1、将下载好的VirtualPlanetBuilder源代码复制到该文件夹,将VirtualPlanetBuilder文件夹命名为VirtualPlanetBuilder-0.9.11,加上版本号之后,也是方便我们日后查看。 
  2、将编译好的 OpenSceneGraph-3.0.1【OpenSceneGraph-3.0.1_VS2010_20130220[-debug-release]】复制到该文件夹。 
  3、 因为笔者在用自己编译的GDAL包,编译VPB的时候,出现了错误。{解决方案,笔者会在今后的学习中提供} 
    改用官方编译好的GDAL包,可以完美的编译通过,具体使用方法如下: 
    在VirtualPlanetBuilder-20130222文件夹中,新建一个名为gdal-1.10.0.0-20130222的文件夹,解压如图所示的压缩包到该文件夹。 
                      
      
  4、新建一个名为VirtualPlanetBuilder-0.9.11_VS2010_20130222文件夹。结果如图所示: 
       

五、设置系统环境变量


  开始-->控制面板-->系统-->高级系统设置 
    
  1、添加系统环境变量:OSG_DIR、GDAL_DIR 
  这两个变量是为了在系统中指明OSG和GDAL的存放位置。 
   
  2、添加Path值 
  在系统Path中添加值: 
   %GDAL_DIR%LIB;%GDAL_DIR%BIN;%OSG_DIR%INCLUDE;%OSG_DIR%LIB;%OSG_DIR%BIN; %OSG_DIR%include;%OSG_DIR%share; %OSG_DIR%data;

  直接复制到Path变量值最前面就行。 
   

六、CMake处理源代码


  如图所示设置 源代码地址和源代码编译地址, 点击 configure。 
  
    
  
  修改CMAKE_INSTALL_PREFIX值和编译代码文件夹位置一致,然后点击configure 
  
   

七、编译源代码


  用VS2010打开VirtualPlanetBuilder-0.9.11_VS2010_20130222文件夹下VIRTUALPLANETBUILDER.sln文件。 
   
  打开:VIRTUALPLANETBUILDER.sln之后, 修改下面文件: vpb 项目下 SpatialProperties.cpp 文件【推荐方法】 
   注意:如果不修改,也可以编译,但是VS2010会出现error LNK2005的链接错误,需要修改VPB工程属性。 
   错误 1 error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) 已经在 SpatialProperties.obj 中定义 E:paperOpenSceneGraphVirtualPlanetBuilder-20130222VirtualPlanetBuilder-0.9.11_VS2010_20130222srcvpbosgDB.lib(osg80-osgDB.dll) 
  错误 3 error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) 已经在 SpatialProperties.obj 中定义 E:paperOpenSceneGraphVirtualPlanetBuilder-20130222VirtualPlanetBuilder-0.9.11_VS2010_20130222srcvpbosgDBd.lib(osg80-osgDBd.dll) 
  
  
  修改方法: 在vpb的 ”项目属性->链接器->命令行“ 中添加 ”/FORCE:MULTIPLE" ,(记住dubug和release都要添加,如果您需要生成两个版本) 
   
   
   
  用VS2010的批生成工具对源代码进行编译。 
    
  编译完成 
  

原文地址:https://www.cnblogs.com/flylong0204/p/4505789.html