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等等,这些库的安装直接敲命令,内部所有依赖关系都被人维护并测试通过。
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
2、安装PCL.vcpkg.exe install 库名字:架构-平台-是否静态库以下命令表示安装包含vtk和qt以来的pcl,编译64位
.vcpkg.exe install PCL[vtk,qt]:x64-window
注意:vs要包含英文语言包
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !