1 什么是Vcpkg
VCPKG是微軟C++ 團(tuán)隊(duì)開發(fā)的適用于C 和C++ 庫的跨平臺開源軟件包管理器,它大大簡化了Windows、Linux 和macOS 上第三方庫相關(guān)的下載和配置操作。如果項(xiàng)目要使用第三方庫,建議通過 vcpkg來安裝它們。vcpkg同時(shí)支持開源和專有庫。
正是由于編譯開源庫的傳統(tǒng)方法的缺陷,所以出現(xiàn)了 Vcpkg,優(yōu)點(diǎn)如下:
自動下載開源庫源代碼。
源碼包的緩存管理和版本管理,可以升級版本。
輕松編譯。
依賴關(guān)系檢查(會自動下載依賴庫進(jìn)行編譯)。
無縫集成 Visual Studio,不需要設(shè)置庫文件、頭文件的所在目錄,自動集成。
Visual Studio 全平臺支持,不僅支持 Debug/Release、x86/x64 編譯,還支持 UWP、ARM 平臺的編譯。
缺點(diǎn):
整個(gè)管理系統(tǒng)太過臃腫
調(diào)用的話會引入很多依賴庫
2 為什么要用Vcpkg
由于開源庫絕大部分都來源于 Linux 系統(tǒng),導(dǎo)致其工程文件、編譯系統(tǒng)都使用 gnu 系列工具,使得將其移植到 Windows 的 VC 開發(fā)環(huán)境下一直是難點(diǎn)。盡管最近幾年很多開源庫都支持了跨平臺的 CMake,但是編譯過程仍然復(fù)雜和多樣化。當(dāng)了解了這些還不夠,我們還需要考慮預(yù)先編譯出哪種類型的開源庫程序。
比如:Debug還是Release、動態(tài)庫還是靜態(tài)庫、MD還是MT、32位還是64位。光是這三種組合就有16種可能性。有的還要考慮是否引用其他開源庫的功能,那么編譯類型的組合會更多。管理起來很麻煩。常見的編譯方式:
編譯方式 | 特點(diǎn) | 舉例 |
---|---|---|
configure、make | 需要msys這樣的unix環(huán)境才可以編譯 | ffmpeg |
自定義編譯工具 | 需要學(xué)習(xí)特定的編譯命令和工具 | openssl、boost |
cmake | 相對簡單輕松 | libcurl |
VC工程文件 | 這種最簡單,直接拿來即可編譯 |
3 如何使用Vcpkg
3.1 安裝
安裝 vcpkg 分為兩步:首先,克隆存儲庫,然后運(yùn)行引導(dǎo)腳本以生成 vcpkg 二進(jìn)制文件。該存儲庫可以克隆到任何地方,并且將包括引導(dǎo)后的 vcpkg 二進(jìn)制文件以及從命令行安裝的任何庫。
2 編譯vcpkg
Windows平臺:在cmd中執(zhí)行Vcpkg工程目錄下的“bootstrap-vcpkg.bat”命令,編譯好后會在同級目錄下生成vcpkg.exe文件。
Linux平臺:在命令行中執(zhí)行在vcpkg工程目錄下“sudo bash ./ bootstrap-vcpkg.sh”命令,會生成一個(gè)可執(zhí)行文件vcpkg。
定義環(huán)境變量 VCPKG_ROOT="/vcpkg"
3.2 查找能夠安裝的庫
.vcpkg.exesearch
常見的庫基本都有,Ogre、Osg、OpenCV、PCL、Eigen、Ceres、g2o等等,這些庫的安裝直接敲命令,內(nèi)部所有依賴關(guān)系都被人維護(hù)并測試通過。
3.3 安裝指定的庫
.vcpkg.exeinstall庫名字
安裝時(shí)候需要指定64/32,static/dynamic,還有運(yùn)行時(shí)是MT/Md光這幾個(gè)組合就有8種
.vcpkg.exeinstall庫名字:架構(gòu)-平臺-是否靜態(tài)庫
例
.vcpkg.exeinstallPCL:x64-windows-static
3.4 引用vcpkg中的庫
使用vs進(jìn)行使用
如果你想使用VS,打開任何新建工程都有環(huán)境的話vcpkg integrate install只是想讓某一個(gè)project有環(huán)境的話vcpkgintegrateproject然后在*vcpkgscriptsuildsystems目錄下會有.nupkg文件,借助VS的nuget管理器導(dǎo)入該配置文件即可。
使用cmake進(jìn)行使用
在cmakelists.txt 應(yīng)用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 移除某個(gè)庫
vcpkgremove庫名字
3.6 導(dǎo)出已經(jīng)安裝的開源庫
有的時(shí)候,一個(gè)項(xiàng)目組中有很多人,不需要每個(gè)人都參與編譯。一個(gè)人編譯好所有開源庫后到處給別人即可。有的時(shí)候也是出于備份的目的,也會導(dǎo)出已經(jīng)安裝的開源庫。導(dǎo)出可以執(zhí)行export指令。例如,我要導(dǎo)出jsoncpp庫,那么執(zhí)行:
.vcpkg.exeexportjsoncpp--7zip
注意,導(dǎo)出時(shí)必須指定導(dǎo)出的包格式。vcpkg支持5種導(dǎo)出包格式,有:參數(shù)格式–raw以不打包的目錄格式導(dǎo)出–nuget以nuget包形式導(dǎo)出–ifw我也不知道這是啥格式–zip以zip壓縮包形式導(dǎo)出–7zip以7z壓縮包形式導(dǎo)出一般地,導(dǎo)出包的格式為:vcpkg-export-<日期>-<時(shí)間>
4 使用Vcpkg安裝PCL
1、首先搜索pcl
.vcpkg.exesearchpcl
2、安裝PCL.vcpkg.exe install 庫名字:架構(gòu)-平臺-是否靜態(tài)庫以下命令表示安裝包含vtk和qt以來的pcl,編譯64位
.vcpkg.exeinstallPCL[vtk,qt]:x64-window
注意:vs要包含英文語言包
審核編輯:劉清
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
596瀏覽量
27510 -
C++語言
+關(guān)注
關(guān)注
0文章
147瀏覽量
7027 -
GNU
+關(guān)注
關(guān)注
0文章
143瀏覽量
17542 -
PCL
+關(guān)注
關(guān)注
1文章
35瀏覽量
13717
原文標(biāo)題:vcpkg-最簡單的各版本pcl編譯方法
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
proteus各版本控制器的區(qū)別
CAD如何導(dǎo)出天正各版本DWG圖紙?CAD圖形導(dǎo)出教程
如何將CAD圖紙導(dǎo)出為天正各版本圖紙?
CAD軟件中怎么導(dǎo)出天正各版本圖紙?
PCL點(diǎn)云庫介紹及項(xiàng)目配置方式
raspberry_pi各版本差別
一張圖帶你了解安卓各版本分布情況
![一張圖帶你了解安卓<b class='flag-5'>各版本</b>分布情況](https://file1.elecfans.com//web2/M00/A7/43/wKgZomUMQ2iAF0pPAAAUR3tZYyY788.png)
PCL放置和編輯元件的方法有哪些詳細(xì)教程說明
![<b class='flag-5'>PCL</b>放置和編輯元件的<b class='flag-5'>方法</b>有哪些詳細(xì)教程說明](https://file.elecfans.com/web1/M00/AD/99/pIYBAF3NC5yAS-sRAALKtDSVmpI912.png)
Lane Tech HS PCL簡單的門傳感器
![Lane Tech HS <b class='flag-5'>PCL</b><b class='flag-5'>簡單</b>的門傳感器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
在Ubuntu上編譯安裝pcl教程
PCL中基礎(chǔ)下采樣介紹
![<b class='flag-5'>PCL</b>中基礎(chǔ)下采樣<b class='flag-5'>介紹</b>](https://file1.elecfans.com/web2/M00/B1/AA/wKgZomVccQaAICRsAAGn1z4tI8w650.jpg)
評論