折騰OSGEARTH心路歷程

寫在前面

最近一週半的時間總結起來就幾個字:折騰、折騰再折騰!!!
以前搞了一段時間的osg和osgearth,尤記得第一次配置osgEarth時的各類折騰,基於vs2010和cmake編譯的32位版本的osg3.4和osgearth2.8(目前都是最新版本),前先後後弄了四天才搞完,當時就想,編譯這一次之後不再編譯了!
可最近因爲項目須要,boss說都用最新的吧,一路折騰過來,用了vs20十、vs201三、vs201五、vs2017幾個平臺幾乎都編譯了一遍,固然也包括osgEarhth的各類第三方庫。每個平臺都能編譯成功,可是運行以前本身的程序老是出現各類問題。php

注:編譯完成以後,用網上好多教程的測試方法測試成功並不能算是真正的編譯成功,而應當基於本身項目須要,可以運行完美運行本身項目文件纔算成功。
固然,通常針對osg的測試使用osgviewer osgversion osglogo(屬於osgExample)+一個簡單小程序測試,對osgEarth的測試通常是osgearth_viewer gdal_tiff.earth和osgviewer gdal_tiff.earth進行測試,這些可以測試成功的話,基本表示osg及osgEarth的編譯沒有太大問題,這時候就要拿本身的項目文件源碼來測試,若是和以前或者看到過的顯示結果有出入,那麼恭喜,並無徹底安裝成功。小程序

折騰之路

之因此折騰,主要還在於64位osgEarth的編譯過程。固然應該會有不少不少大牛應用vs2015完美編譯64位的osg和osgearth,對此深表佩服,佩服的緣由後續再說。curl

好吧,記錄本身折騰過程當中的幾個關鍵點,以免以後少走彎路。工具

折騰vs2013

vs2010如今可能用的比較少了吧,32位的osg和osgEarth(簡稱OE),能運行,64位的也能編譯成功,可是並不完美。完不完美,主要看本身的需求了,編譯過程再也不詳述。
用vs2013編譯OE也能編譯成功,可是編譯osg中,freetype插件編譯不成功,若是你對字體顯示要求不高,固然能夠忽略該插件。咱們都知道,OSGEARTH編譯須要基於osg,用vs2013編譯完成OSGEARTH後,OSGEARTH的插件是基於osg的插件庫安裝在bin目錄下,以下:圖片描述
可是用vs2013編譯出的tiff鏈接庫在OSGEARTH中並不能起做用,出現http://bbs.osgchina.org/forum...,錯誤緣由極可能是本身的tiff庫出了問題(32位沒問題),其餘測試到時沒什麼問題,一旦出現此問題,兩種解決方法:測試

  1. 從新生成tiff鏈接庫,並將生成的dll覆蓋掉原來的tiff.dll;
  2. 從cmake開始,從新編譯OE。

若是方案一仍是不能解決問題,只好採用方案2了。字體

折騰vs2015

vs2013有問題,好吧,老師說用用vs2015試試。
編譯過程依然不在詳述,只想說:很是不建議用vs2015編譯OE。
最主要緣由:osg官網並無提供打包好的針對vs2015的第三方插件包。也就說說,要想編譯osg,前提須要編譯好本身所須要的或者將會須要的第三方插件,並且在編譯過程當中,cmake很是容易找不到freetype和freetype2(前提本身編譯成功freetype)頭文件和庫文件。網站

折騰vs2017

用vs2017編譯osg3.4,按照網上其餘教程通常都可以編譯成功,須要注意幾點:ui

  1. cmake版本不要用最新版,但也不能用較低版本。低版本沒法生成針對vs2017的解決方案,最新的cmake問題多多。我使用的cmake3.8.0.
  2. 在將cmakelists.txt拖入到cmake時,要特別注意配置的各項內容,仔細檢查本身所須要的庫是否都添加到路徑中,一次次config,直到不出現錯誤爲止。

編譯gdal時候(必須):

找到gdal的源碼文件下nmake.opt文件圖片描述
修改nmake.opt文件內容(可用Notepad++打開),將其中的圖片描述 前面的 「#」 去掉。
用管理員身份打開vs2017命令行工具:圖片描述
分別執行url

nmake -f makefile.vc machine=x64
nmake -f makefile.vc install machine=x64
nmake -f makefile.vc devinstall

編譯成功以後會在C盤根目錄產生:
圖片描述
而後將該目錄下的bin、lib、include、data目錄複製到你的安裝路徑下。spa

編譯curl(必須)

過程相似於編譯gadl:64-debug:

nmake /f Makefile.vc mode=static vc=15 debug=yes rtlibcfg=static machine=AMD64
nmake /f Makefile.vc mode=static vc=15 debug=no rtlibcfg=static machine=AMD64

編譯成功後,會自動在curl的根目錄下生成builds文件夾,其內容如圖:
圖片描述
一樣複製該目錄下的頭文件和庫問價到你須要的安裝路徑之下。

編譯expat

expat的做用不作過多解釋,也並不是OSGEARTH的必須依賴包。
expat的官方網站提提供了expat-win32bin-2.2.3.exe,而後雙擊安裝,安裝完成以後進入sources目錄,雙擊打開expat.sln,如圖:
圖片描述
打開以後將其編譯平臺改成x64,圖片描述
而後生成expat庫文件圖片描述

通過上述步驟以後生成的庫文件在 sources/win32下,如圖圖片描述

最後貼一下我所用到的OSGEARTH的第三方庫:
圖片描述

另:本身詳細書寫了一份OSG和OSGEARTH的源碼編譯教程,相比於該手冊(2011年編寫)圖片描述有比較大的改進,相應的第三方依賴庫也是應用了較新的版本(截止2017-8-8日)和新的編譯方法。網上大多數的編譯過程仍是針對32位OSGEARTH的,如今計算機硬件配置水平都很高,若是再繼續使用32位版本開發項目未免有些浪費。繼:很是感謝上述文檔(網上能夠下載到)提供的幫助。

相關文章
相關標籤/搜索