Visual Studio 使用第三方库管理工具 vcpkg

一、介绍

Windows下开发C/C++程序,少不了用开源的第三方库。比如线性代数和矩阵分析的库eigen,或者图像处理的OpenCV库。虽然这些库都是开源的,但是由于要编译debug和release版本的,32位以及64位的,如果像FFmpeg这种还要考虑是否引用其他开源库的功能,那么编译类型的组合会更多。如此多库的版本,编译和管理起来都十分麻烦。

这时候我们就需要一个库管理工具,来管理我们所有的第三方库了。这里使用vcpkg集成到Visual Studio中。使用vcpkg的优点有:

  • 自动下载开源库源代码
  • 源码包的缓存管理和版本管理,可以升级版本
  • 依赖关系检查(比如编译libcurl,会自动下载zlib、openssl进行编译)
  • 无缝集成Visual Studio,不需要设置库文件、头文件的所在目录,自动集成。
  • Visual Studio全平台支持,不仅支持Debug/Release、x86/x64编译,还支持UWP、ARM平台的编译。

二、vcpkg安装

1.下载源码

vcpkg的源码地址,可以直接下载zip包或者git clone下来:GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOSC++ Library Manager for Windows, Linux, and MacOS. Contribute to microsoft/vcpkg development by creating an account on GitHub.https://github.com/Microsoft/vcpkg

2.编译vcpkg

使用源码里的bat批处理文件即可编译,在PowerShell中进入到源码路径执行.\bootstrap-vcpkg.bat:

Vcpkg大量使用的psl脚本,所以官方强烈推荐使用PowerShell而不时CMD命令行来执行各种操作。尽管在使用的时候兼容CMD,但是在编译这一步,请使用PowerShell。

编译完成后会在源码路径下生成一个vcpkg.exe文件,可以输入.\vcpkg.exe --help查看帮助,检查是否安装成功。

3.添加环境变量

在环境变量中添加vcpkg的路径:


三、使用vcpkg安装第三方库

1.查看Vcpkg支持的开源库列表

进入到源码路径执行:

bash 复制代码
.\vcpkg.exe search

2.安装一个第三方库

这里的"安装"其实是指下载和编译。

比如要安装Windows的64位的OpenCV库,可以输入下面的命令安装:

bash 复制代码
.\vcpkg.exe install opencv:x64-windows

如果电脑中没有安装cmake,vcpkg会自动下载portable版本的cmake。但是由于各种原因,下载的网速很慢,所以建议先自行下载安装cmake。最好是下载最新版本的cmake。

3.指定编译某种架构的第三方库

上面可以看到安装OpenCV的命令最后有:x64-windows,指定了安装的架构为Windows的64位库。

如果不指定安装的架构,vcpkg默认把开源库编译成x86的Windows版本的库。可以使用下面的命令查看vcpkg支持安装多少种架构:

bash 复制代码
.\vcpkg.exe help triplet
  • arm-uwp
  • arm-windows
  • arm64-uwp
  • arm64-windows
  • x64-uwp
  • x64-windows-static
  • x64-windows
  • x86-uwp
  • x86-windows-static
  • x86-windows

只需要在需要安装的第三方库后面使用冒号":"指定相应的triplet,即可安装对应架构的第三方库。

4.移除一个指定的第三方库

如果移除一个已经安装的开源库,那么执行remove指令即可。比如我们要移除OpenCV,那么执行命令:

bash 复制代码
.\vcpkg.exe remove opencv
  • 这个时候只是移除了默认的x86-winodws版本的文件,如果有其他平台的版本需要移除,需要指定相应的triplet。
  • 移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除。

5.列出已经安装的开源库

bash 复制代码
.\vcpkg.exe list

四、vcpkg和Visual Studio的集成

在安装完我们需要用的第三方库后,常规情况下,需要设置include目录、lib目录等。vcpkg提供了两种方法,可以方便的在自己的项目中集成安装的第三方库。

1.集成到全局

这种方法适用于 MSBuild 创建的项目,cmake 的项目也可以通过添加编译选项来引用下载的第三方库。执行命令:

bash 复制代码
 .\vcpkg integrate install

当出现"Applied user-wide integration for this vcpkg root."字样的时候,说明已经集成成功。根据输出也可以看到 cmake 项目使用的编译选项,以及在 MSBuild 项目中可以直接包含头文件引用。

移除全局集成执行下面的命令即可:

bash 复制代码
 .\vcpkg integrate remove

2.集成到工程

在大多数情况下,我们并不希望将所有安装的库集成到全局环境中,毕竟有很多第三方库我们希望进行自定义处理,或者根本不想使用这些第三方库。因此,将这些库集成到具体的工程中是最灵活的处理方式,也是工程级项目推荐的做法。

(1)生成配置文件

首先执行如下命令,生成 nuget 配置文件:

bash 复制代码
 .\vcpkg integrate project

根据输出可以看到在 vcpkg 的路径下生成了一个 .nupkg 的文件:

(2)基本配置

接着,打开 vs2022 工具 -> NuGet包管理器 -> 程序包管理器设置 -> 程序包源

添加安装的vcpkg包源,点击"加号"增加一个源。修改源的名字为vcpkg。在"源"的选项中点击右侧的"..."选择上一步中 .nupkg 文件的路径,然后点击右侧的"更新按钮"。点击"确定",关闭设置对话框。

(3)工程配置

用Visual Studio 打开一个工程或解决方案。右键点击需要设置的工程或解决方案,选择"管理NuGet程序包"。在右上角的"程序包源"中选择刚刚设置的"vcpkg"。这样在"浏览"选项卡中就可以看到第一步中生成的 nuget 配置文件。点击最右侧的"安装",这样就可以集成到某个工程了。

相关推荐
躺不平的理查德5 小时前
数据结构-链表【chapter1】【c语言版】
c语言·开发语言·数据结构·链表·visual studio
weixin_537590458 小时前
《C++ Primer Plus》中文版第二章习题
开发语言·c++·visual studio
时光追逐者2 天前
Visual Studio 2022:一个功能全面且强大的IDE
ide·c#·.net·.netcore·visual studio
Ru1yi2 天前
【VS+QT】联合开发踩坑记录
开发语言·c++·ide·qt·visual studio
Hellc0072 天前
快速入门:Visual Studio 中的 Docker
docker·eureka·visual studio
yunteng5213 天前
VisualStudio远程编译调试linux_c++程序(二)
linux·c++·ssh·gdb·visual studio·remote
羊小猪~~4 天前
数据结构C语言描述1(图文结合)--顺序表讲解,实现,表达式求值应用,考研可看
java·c语言·数据结构·c++·链表·visual studio code·visual studio
诗和远方ya5 天前
c# 值类型
开发语言·c#·软件工程·visual studio
羊小猪~~5 天前
C/C++语言基础--C++模板与元编程系列三(变量模板、constexpr、萃取等…………)
java·c语言·开发语言·c++·visual studio code·visual studio
Eiceblue5 天前
用Python将PDF表格提取到文本、CSV和Excel文件中
开发语言·python·pdf·excel·visual studio