最近一週半的時間總結起來就幾個字:折騰、折騰再折騰!!!
以前搞了一段時間的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
好吧,記錄本身折騰過程當中的幾個關鍵點,以免以後少走彎路。工具
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位沒問題),其餘測試到時沒什麼問題,一旦出現此問題,兩種解決方法:測試
若是方案一仍是不能解決問題,只好採用方案2了。字體
vs2013有問題,好吧,老師說用用vs2015試試。
編譯過程依然不在詳述,只想說:很是不建議用vs2015編譯OE。
最主要緣由:osg官網並無提供打包好的針對vs2015的第三方插件包。也就說說,要想編譯osg,前提須要編譯好本身所須要的或者將會須要的第三方插件,並且在編譯過程當中,cmake很是容易找不到freetype和freetype2(前提本身編譯成功freetype)頭文件和庫文件。網站
用vs2017編譯osg3.4,按照網上其餘教程通常都可以編譯成功,須要注意幾點:ui
找到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
過程相似於編譯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的做用不作過多解釋,也並不是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位版本開發項目未免有些浪費。繼:很是感謝上述文檔(網上能夠下載到)提供的幫助。