1 什么是Vcpkg
VCPKG 是Microsoft 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,但编译过程仍然复杂多样。当了解这一点还不够的时候,我们还需要考虑预编译的是什么类型的开源库程序。
例如:调试或发布、动态库或静态库、MD 或MT、32 位或64 位。仅这三种组合就有16 种可能性。有的还需要考虑是否引用其他开源库的功能,这样编译类型的组合就会更多。管理起来很麻烦。常见的编译方法:
编译方式特点,例如configure和make需要msys等Unix环境来编译ffmpeg。自定义编译工具需要学习特定的编译命令和工具。 openssl 和boostcmake 相对简单易行。 libcurlVC 项目文件是最简单的。直接编译即可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搜索
基本都有常用的库,比如Ogre、Osg、OpenCV、PCL、Eigen、Ceres、g2o等,这些库的安装需要直接命令,所有内部依赖都已经维护和测试。
3.3 安装指定库
.vcpkg.exe安装库名称
安装时需要指定64/32、静态/动态、运行时MT/Md。仅这些就有8 种组合。
.vcpkg.exe安装库名:架构-平台-是否是静态库
例子
.vcpkg.exeinstallPCL:x64-windows-static
3.4 vcpkg中的参考库
使用与使用
如果你想使用VS,打开任何新项目并有一个环境。 vcpkg 集成安装。如果只是想让某个项目有一个环境,vcpkgintegrateproject。然后*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'CACHEPATH'')set (CMAKE_TOOLCHAIN_FILE${VCPKG_ROOT})
3.5 删除库
vcpkgremove 库名称
3.6 导出已安装的开源库
有时候,一个项目组的人很多,并不需要所有人都参与编译。一个人可以编译所有开源库并将其分发给其他人。有时,还会导出已安装的开源库以进行备份。导出可以执行导出命令。例如,如果我想导出jsoncpp库,则执行:
.vcpkg.exeexportjsoncpp--7zip
注意导出时必须指定导出的包格式。 vcpkg 支持5 种导出包格式,包括:参数格式 raw 以未打包目录格式导出 nuget 以nuget 包形式导出 ifw 我不知道这是什么格式 zip 以zip 压缩包形式导出 7zip 是7z导出以压缩包格式导出一般导出包的格式为:vcpkg-export-date-time
4 使用Vcpkg安装PCL
1.首先搜索pcl
.vcpkg.exesearchpcl
2.安装PCL.vcpkg.exe安装库名称:架构-平台-是否是静态库。以下命令的意思是安装pcl包括vtk和qt,并编译64位
.vcpkg.exeinstallPCL[vtk,qt]:x64-窗口
注意:VS必须包含英文语言包
审稿人:刘庆