一、OSG(OSGEarth)的安裝——利用Vcpkg編譯 ( OSGEart編譯後有Bug)

注意:

   經過坑爹的兩個熬夜調試修改終於發現,vcpkg編譯的OSG能用,但osgearth不能用有bug,還是需要用CMake重新編譯——追加於凌晨兩點,f_ck! 測試:將oe例子運行所需要的各個dll都拷貝到同一文件夾下,osgearth_view.exe 還是跑不起來,depends看有錯誤依賴項,vcpkg沒有完美構建出來osgearth庫,網上查了一下,有同學遇到同樣問題!
大家如果想用OSG的話可以採用vcpkg編譯(跳過3.2),如果用osgearth的話就不用往下看了。

正文

   說到OSGEarth的安裝就不得不回憶15年左右安裝OSG的過程,QT+CMake+源碼編譯,各種編譯不過和崩潰,看着CMake界面上各種紅色的錯誤,很是沮喪,最後好像是花了一天多才編譯好,運行起例子那個牛的時候激動的不行,最後還是去用了VTK,沒再深入瞭解過OSG。。。。最近需要OSGEarth用,於是又開始折騰了,這次偷懶用的VC++ 打包工具 Vcpkg,很快就編譯好了,並且全程幾乎無手動參與,感覺挺好,於是記錄下來過程。

1.Vcpkg介紹

   vcpkg 是微軟 C++ 團隊開發適用於Windows,Linux 和 MacOS 的 C ++庫管理器。vcpkg 自身也是使用 C++ 開發的 (而其他的 C++ 包管理大多並不是 C++ 開發的),並且 vcpkg 能夠幫助用戶在 Visual Studio 中,更好的使用這些安裝好的庫。vcpkg 整合了 git,構建系統整合的 CMake,而絕大多數的 C++ 項目都可以直接或者間接的方式使用 CMake創建原生項目文件並構建。
   簡單點說就是習慣用vs的同學,使用起來開源庫非常方便,個人感覺就像python裏面的命令“ pip install VTK-7.1.1-cp36-cp36m-win_amd64.whl ”一樣,可以自動聯網下載,並用你電腦上的 VS編譯器進行編譯。優點如下:
1)自動下載開源庫源代碼
2)源碼包的緩存管理和版本管理,可以升級版本
3)自動編譯
4)依賴關係檢查(比如編譯libcurl,會自動下載zlib、openssl進行編譯)
5)無縫集成Visual Studio,不需要設置庫文件、頭文件的所在目錄,自動集成。
6)Visual Studio全平臺支持,不僅支持Debug/Release、x86/x64編譯,還支持UWP、ARM平臺的編譯。

2.獲取Vcpkg

   Vcpkg的官方源碼站點爲:https://github.com/microsoft/vcpkg直接下載一份壓縮包解壓放到磁盤裏面,我的放在了 D:\vcpkg_master。
   注意:Vcpkg大量使用的psl腳本,所以官方強烈推薦使用PowerShell而不時CMD命令行來執行各種操作。儘管在使用的時候兼容CMD,但是在編譯這一步,請使用PowerShell。
編譯很簡單,使用PowerShell執行Vcpkg工程目錄下的“bootstrap-vcpkg.bat”命令,即可編譯。編譯好以後會在同級目錄下生成vcpkg.exe文,編譯期間,腳本會自動下載vswhere組件。
命令:PS D:\vcpkg_master> .\bootstrap-vcpkg.bat
如果查看Vcpkg支持的開源庫列表執行命令:.\vcpkg.exe search可以看到
如果查看本機安裝的開源庫列表執行命令:.\vcpkg.exe list可以看到

3.使用vcpkg爲Windows構建osgearth

3.1 首先安裝構建完全功能的OSGearth所需的依賴項:

執行命令:

PS D:\vcpkg_master> .\vcpkg install osg:x64-windows sqlite3:x64-windows protobuf:x64-windows poco:x64-windows

   這將需要一段時間第一次運行它,因爲這會下載很多壓縮包,然後解壓編譯放在你的D盤下,如果遇到網速不好卡主的情況,可以手動下載被卡主的壓縮包放到D:\vcpkg_master\downloads 下面,然後重新執行上面命令,不用下載了直接解壓編譯。例如下面的圖所示:
在這裏插入圖片描述
在這裏插入圖片描述
然後安靜等待所有的依賴項執行完成吧。

3.2 實際構建OSGearth
執行命令:.\vcpkg install osgearth:x64-windows會彈出提示是否重新構建幾個你已經安裝過的依賴項以及新的添加庫文件,會有個提示命令:

run the command with the --recurse option

你需要重新執行命令如下:.\vcpkg install osgearth:x64-windows --recurse
   然後程序就會重複構建依賴項時候的情況,下載、解壓、編譯,你可以手動下載幫忙,這次非常多大概有一百多個庫需要安裝,不要問爲什麼,我也說不清,喫瓜羣衆圍觀靜待即可。中間可能會出現下載報錯,然後你手動下載也會發現網址打不開,例如:“raw.githubusercontent.com”無法鏈接導致無法下載,這時候可以去修改Hosts臨時解決:
1)通過IPAddress.com首頁,輸入raw.githubusercontent.com查詢到了真實IP地址199.232.28.133
2)找到C:\Windows\System32\drivers\etc的hosts文件
3)添加 以下內容並保存:199.232.28.133 raw.githubusercontent.com
4)重新執行命令下載吧

3.3.編譯完成

下圖中只有OSG是我想要的,但是那麼多其他的。。。。。
在這裏插入圖片描述
安裝完了會提示:“done”。
在這裏插入圖片描述

個人編譯完成並且導出了一份,具體下載地址:https://download.csdn.net/download/m0_37251750/12370782

Zip archive exported at: D:\vcpkg_master\vcpkg-export-20200428-231448.zip
To use the exported libraries in CMake projects use:
    "-DCMAKE_TOOLCHAIN_FILE=[...]/scripts/buildsystems/vcpkg.cmake"

4.集成到工程

   爲什麼要“集成到工程”呢?因爲在大部分情況下,我們不希望集成到全局,畢竟有很多第三方庫我們希望自定義處理一下,或者乾脆不想集成第三方庫。那麼集成到工程是最靈活的處理方式。也是工程級項目推薦的處理方式。
   “集成到工程”需要利用Visual Studio 中的nuget插件來實現。我們接下來一步一步來說。

4.1. 生成配置
   執行命令 .\vcpkg integrate project,這時候會在“\scripts\buildsystems”目錄下,生成nuget配置文件,其中是指vcpkg實際所在目錄。
在這裏插入圖片描述
4.2. 基本配置
   打開Visual Studio,點擊菜單“工具->NuGet包管理器->程序包管理器設置”,進入設置界面,點擊“程序包源”。
在這裏插入圖片描述
   點擊“加號”增加一個源。修改源的名字爲vcpkg。在“源”的選項中點擊右側的””選擇vcpkg目錄下的“scripts\buildsystems”目錄,然後點擊右側的“更新按鈕”。點擊“確定”,關閉設置對話框。到此,全局性的設置已經完成,以後不必再重複設置了。

4.3. 工程配置
   用Visual Studio 打開一個工程或解決方案。右鍵點擊需要設置的工程,選擇“管理NuGet程序包”。在右上角的“程序包源”中選擇剛剛設置的“vcpkg”。這樣在“瀏覽”選項卡中就可以看到“vcpkg.H.Repos.vcpkg”。點擊最右側的“安裝”。這樣就可以集成到某個工程了。
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章