1 什么是Vcpkg
VCPKG是微軟C++ 團隊開發的適用于C 和C++ 庫的跨平臺開源軟件包管理器,它大大簡化了Windows、Linux 和macOS 上第三方庫相關的下載和配置操作。如果項目要使用第三方庫,建議通過 vcpkg來安裝它們。vcpkg同時支持開源和專有庫。
正是由于編譯開源庫的傳統方法的缺陷,所以出現了 Vcpkg,優點如下:
自動下載開源庫源代碼。
源碼包的緩存管理和版本管理,可以升級版本。
輕松編譯。
依賴關系檢查(會自動下載依賴庫進行編譯)。
無縫集成 Visual Studio,不需要設置庫文件、頭文件的所在目錄,自動集成。
Visual Studio 全平臺支持,不僅支持 Debug/Release、x86/x64 編譯,還支持 UWP、ARM 平臺的編譯。
缺點:
整個管理系統太過臃腫
調用的話會引入很多依賴庫
2 為什么要用Vcpkg
由于開源庫絕大部分都來源于 Linux 系統,導致其工程文件、編譯系統都使用 gnu 系列工具,使得將其移植到 Windows 的 VC 開發環境下一直是難點。盡管最近幾年很多開源庫都支持了跨平臺的 CMake,但是編譯過程仍然復雜和多樣化。當了解了這些還不夠,我們還需要考慮預先編譯出哪種類型的開源庫程序。
比如:Debug還是Release、動態庫還是靜態庫、MD還是MT、32位還是64位。光是這三種組合就有16種可能性。有的還要考慮是否引用其他開源庫的功能,那么編譯類型的組合會更多。管理起來很麻煩。常見的編譯方式:
編譯方式 | 特點 | 舉例 |
---|---|---|
configure、make | 需要msys這樣的unix環境才可以編譯 | ffmpeg |
自定義編譯工具 | 需要學習特定的編譯命令和工具 | openssl、boost |
cmake | 相對簡單輕松 | libcurl |
VC工程文件 | 這種最簡單,直接拿來即可編譯 |
3 如何使用Vcpkg
3.1 安裝
安裝 vcpkg 分為兩步:首先,克隆存儲庫,然后運行引導腳本以生成 vcpkg 二進制文件。該存儲庫可以克隆到任何地方,并且將包括引導后的 vcpkg 二進制文件以及從命令行安裝的任何庫。
2 編譯vcpkg
Windows平臺:在cmd中執行Vcpkg工程目錄下的“bootstrap-vcpkg.bat”命令,編譯好后會在同級目錄下生成vcpkg.exe文件。
Linux平臺:在命令行中執行在vcpkg工程目錄下“sudo bash ./ bootstrap-vcpkg.sh”命令,會生成一個可執行文件vcpkg。
定義環境變量 VCPKG_ROOT="/vcpkg"
3.2 查找能夠安裝的庫
.vcpkg.exesearch
常見的庫基本都有,Ogre、Osg、OpenCV、PCL、Eigen、Ceres、g2o等等,這些庫的安裝直接敲命令,內部所有依賴關系都被人維護并測試通過。
3.3 安裝指定的庫
.vcpkg.exeinstall庫名字
安裝時候需要指定64/32,static/dynamic,還有運行時是MT/Md光這幾個組合就有8種
.vcpkg.exeinstall庫名字:架構-平臺-是否靜態庫
例
.vcpkg.exeinstallPCL:x64-windows-static
3.4 引用vcpkg中的庫
使用vs進行使用
如果你想使用VS,打開任何新建工程都有環境的話vcpkg integrate install只是想讓某一個project有環境的話vcpkgintegrateproject然后在*vcpkgscriptsuildsystems目錄下會有.nupkg文件,借助VS的nuget管理器導入該配置文件即可。
使用cmake進行使用
在cmakelists.txt 應用vcpkg
set(CMAKE_TOOLCHAIN_FILE"G:/LIB/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake") #或者 set(VCPKG_ROOT"${CMAKE_SOURCE_DIR}/../vcpkg/scripts/buildsystems/vcpkg.cmake"CACHEPATH"") set(CMAKE_TOOLCHAIN_FILE${VCPKG_ROOT})
3.5 移除某個庫
vcpkgremove庫名字
3.6 導出已經安裝的開源庫
有的時候,一個項目組中有很多人,不需要每個人都參與編譯。一個人編譯好所有開源庫后到處給別人即可。有的時候也是出于備份的目的,也會導出已經安裝的開源庫。導出可以執行export指令。例如,我要導出jsoncpp庫,那么執行:
.vcpkg.exeexportjsoncpp--7zip
注意,導出時必須指定導出的包格式。vcpkg支持5種導出包格式,有:參數格式–raw以不打包的目錄格式導出–nuget以nuget包形式導出–ifw我也不知道這是啥格式–zip以zip壓縮包形式導出–7zip以7z壓縮包形式導出一般地,導出包的格式為:vcpkg-export-<日期>-<時間>
4 使用Vcpkg安裝PCL
1、首先搜索pcl
.vcpkg.exesearchpcl
2、安裝PCL.vcpkg.exe install 庫名字:架構-平臺-是否靜態庫以下命令表示安裝包含vtk和qt以來的pcl,編譯64位
.vcpkg.exeinstallPCL[vtk,qt]:x64-window
注意:vs要包含英文語言包
審核編輯:劉清
-
Linux系統
+關注
關注
4文章
595瀏覽量
27490 -
C++語言
+關注
關注
0文章
147瀏覽量
7027 -
GNU
+關注
關注
0文章
143瀏覽量
17530 -
PCL
+關注
關注
1文章
35瀏覽量
13704
原文標題:vcpkg-最簡單的各版本pcl編譯方法
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論