vcpkg-最简单的各版本pcl编译方法介绍

描述

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.exe search

 

常见的库基本都有,Ogre、Osg、OpenCV、PCL、Eigen、Ceres、g2o等等,这些库的安装直接敲命令,内部所有依赖关系都被人维护并测试通过。

Linux系统

3.3 安装指定的库

 

.vcpkg.exe install 库名字

 

安装时候需要指定64/32,static/dynamic,还有运行时是MT/Md光这几个组合就有8种

 

.vcpkg.exe install 库名字:架构-平台-是否静态库

 

 

.vcpkg.exe install PCL:x64-windows-static

 

3.4 引用vcpkg中的库

使用vs进行使用

如果你想使用VS,打开任何新建工程都有环境的话vcpkg integrate install只是想让某一个project有环境的话vcpkg integrate project然后在*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" CACHE PATH "")
set(CMAKE_TOOLCHAIN_FILE ${VCPKG_ROOT})

 

3.5 移除某个库

 

vcpkg remove 库名字

 

3.6 导出已经安装的开源库

有的时候,一个项目组中有很多人,不需要每个人都参与编译。一个人编译好所有开源库后到处给别人即可。有的时候也是出于备份的目的,也会导出已经安装的开源库。导出可以执行export指令。例如,我要导出jsoncpp库,那么执行:

 

.vcpkg.exe export jsoncpp --7zip

 

注意,导出时必须指定导出的包格式。vcpkg支持5种导出包格式,有:参数格式–raw以不打包的目录格式导出–nuget以nuget包形式导出–ifw我也不知道这是啥格式–zip以zip压缩包形式导出–7zip以7z压缩包形式导出一般地,导出包的格式为:vcpkg-export-<日期>-<时间>

4 使用Vcpkg安装PCL

1、首先搜索pcl

 

.vcpkg.exe search pcl

 

Linux系统

2、安装PCL.vcpkg.exe install 库名字:架构-平台-是否静态库以下命令表示安装包含vtk和qt以来的pcl,编译64位

 

.vcpkg.exe install PCL[vtk,qt]:x64-window

 

注意:vs要包含英文语言包





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分