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:\warmerda\bld ,包含文件 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:\paper\OpenSceneGraph\VirtualPlanetBuilder-20130222\VirtualPlanetBuilder-0.9.11_VS2010_20130222\src\vpb\osgDB.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:\paper\OpenSceneGraph\VirtualPlanetBuilder-20130222\VirtualPlanetBuilder-0.9.11_VS2010_20130222\src\vpb\osgDBd.lib(osg80-osgDBd.dll) 
  
  
  修改方法: 在vpb的 ”項目屬性->鏈接器->命令行“ 中添加 ”/FORCE:MULTIPLE" ,(記住dubug和release都要添加,如果您需要生成兩個版本) 
   
   
   
  用VS2010的批生成工具對源代碼進行編譯。 
    
  編譯完成 
  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM