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 配置文件。点击最右侧的"安装",这样就可以集成到某个工程了。

相关推荐
我不是懒洋洋16 天前
【C++】string(string的成员变量、auto和范围for、string常用接口的说明、OJ题目、string的模拟实现)
c语言·开发语言·c++·visual studio
C++ 老炮儿的技术栈16 天前
Ubuntu root账号自动登陆
linux·运维·服务器·c语言·c++·ubuntu·visual studio
A.零点17 天前
【2个月 C 语言从入门到精通:零基础系统教程】第十二讲:深入了解指针(五)
c语言·开发语言·网络·笔记·visual studio
彷徨而立17 天前
【VS2026】介绍 Visual Studio 几个重要配置项
visual studio
AndyHuang197617 天前
【避坑指南】Visual Studio 插件报错 “Windows Terminal (wt.exe) was not found in PATH“ 完美解决
ide·windows·visual studio
彷徨而立17 天前
【Visual Studio】msbuild 使用举例
ide·visual studio
blueman888818 天前
VS2022 切换定义(F12 / Go to Definition)反应慢
c++·visual studio
周杰伦fans18 天前
记一次 Visual Studio 突然报错“未能加载 Microsoft.Internal.VisualStudio.Interop”的奇葩经历
microsoft·log4j·visual studio
x1387028595718 天前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
robot_???20 天前
Visual studio2022:找不到指定的SDK“Microsoft.NET.Sdk”
microsoft·.net·visual studio