1 什么是Vcpkg
VCPKG是微軟C++ 團(tuán)隊(duì)開發(fā)的適用于C 和C++ 庫的跨平臺(tái)開源軟件包管理器,它大大簡化了Windows、Linux 和macOS 上第三方庫相關(guān)的下載和配置操作。如果項(xiàng)目要使用第三方庫,建議通過 vcpkg來安裝它們。vcpkg同時(shí)支持開源和專有庫。
正是由于編譯開源庫的傳統(tǒng)方法的缺陷,所以出現(xiàn)了 Vcpkg,優(yōu)點(diǎn)如下:
自動(dòng)下載開源庫源代碼。
源碼包的緩存管理和版本管理,可以升級版本。
輕松編譯。
依賴關(guān)系檢查(會(huì)自動(dòng)下載依賴庫進(jìn)行編譯)。
無縫集成 Visual Studio,不需要設(shè)置庫文件、頭文件的所在目錄,自動(dòng)集成。
Visual Studio 全平臺(tái)支持,不僅支持 Debug/Release、x86/x64 編譯,還支持 UWP、ARM 平臺(tái)的編譯。
缺點(diǎn):
整個(gè)管理系統(tǒng)太過臃腫
調(diào)用的話會(huì)引入很多依賴庫
2 為什么要用Vcpkg
由于開源庫絕大部分都來源于 Linux 系統(tǒng),導(dǎo)致其工程文件、編譯系統(tǒng)都使用 gnu 系列工具,使得將其移植到 Windows 的 VC 開發(fā)環(huán)境下一直是難點(diǎn)。盡管最近幾年很多開源庫都支持了跨平臺(tái)的 CMake,但是編譯過程仍然復(fù)雜和多樣化。當(dāng)了解了這些還不夠,我們還需要考慮預(yù)先編譯出哪種類型的開源庫程序。
比如:Debug還是Release、動(dòng)態(tài)庫還是靜態(tài)庫、MD還是MT、32位還是64位。光是這三種組合就有16種可能性。有的還要考慮是否引用其他開源庫的功能,那么編譯類型的組合會(huì)更多。管理起來很麻煩。常見的編譯方式:
編譯方式 | 特點(diǎn) | 舉例 |
---|---|---|
configure、make | 需要msys這樣的unix環(huán)境才可以編譯 | ffmpeg |
自定義編譯工具 | 需要學(xué)習(xí)特定的編譯命令和工具 | openssl、boost |
cmake | 相對簡單輕松 | libcurl |
VC工程文件 | 這種最簡單,直接拿來即可編譯 |
3 如何使用Vcpkg
3.1 安裝
安裝 vcpkg 分為兩步:首先,克隆存儲(chǔ)庫,然后運(yùn)行引導(dǎo)腳本以生成 vcpkg 二進(jìn)制文件。該存儲(chǔ)庫可以克隆到任何地方,并且將包括引導(dǎo)后的 vcpkg 二進(jìn)制文件以及從命令行安裝的任何庫。
2 編譯vcpkg
Windows平臺(tái):在cmd中執(zhí)行Vcpkg工程目錄下的“bootstrap-vcpkg.bat”命令,編譯好后會(huì)在同級目錄下生成vcpkg.exe文件。
Linux平臺(tái):在命令行中執(zhí)行在vcpkg工程目錄下“sudo bash ./ bootstrap-vcpkg.sh”命令,會(huì)生成一個(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)-是否靜態(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目錄下會(huì)有.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í)候也是出于備份的目的,也會(huì)導(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)-是否靜態(tài)庫以下命令表示安裝包含vtk和qt以來的pcl,編譯64位
.vcpkg.exeinstallPCL[vtk,qt]:x64-window
注意:vs要包含英文語言包
審核編輯:劉清
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
593瀏覽量
27397 -
C++語言
+關(guān)注
關(guān)注
0文章
147瀏覽量
6992 -
GNU
+關(guān)注
關(guān)注
0文章
143瀏覽量
17494 -
PCL
+關(guān)注
關(guān)注
1文章
35瀏覽量
13680
原文標(biāo)題:vcpkg-最簡單的各版本pcl編譯方法
文章出處:【微信號(hào):3D視覺工坊,微信公眾號(hào):3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論