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

PCL放置和編輯元件的方法有哪些詳細(xì)教程說(shuō)明

Lane Tech HS PCL簡(jiǎn)單的門(mén)傳感器

評(píng)論