一、vcpkg介绍

  在使用C/C++编写项目时, 引用第三方库是很麻烦的事, 需要手动下载源码然后编译最后再添加到项目里,配置头文件、lib、dll,如果是一个简单点的库,编译加配置起来也不麻烦,可能半个小时或一个上午就能解决;如果是一个复杂点的库,那可能是一天、乃至一周可能都无法编译成功,例如ffmpeg, openssl,gRPC等等,这些库在windows上的的编译极其麻烦,如果是新手,可能更痛苦。相比 java有maven,python有pip,go有go mod, C#有NuGet,Rust有cargo,这些语言在导入第三方库时都很方便,修改版本也方便,但是对于C++项目则很痛苦,vcpkg的出现解决了C/C++编译第三库困难的问题,vcpkg跨平台, 在windows、linux、MacOS都可以使用。安装vcpkg,想要使用哪个库,vcpkg只要一条命令, 直接用安装编译,无需配置头文件、lib、dll, 直接写代码即可,十分的方便。
  官网:https://vcpkg.io/en/index.html
在这里插入图片描述
  点击Get started可以查看如何安装vcpkg
  点击Browse Packages可以查找想要的库

  下面介绍在window系统如何安装使用vcpkg.

二、vcpkg安装

  安装vcpkg之前,先查看Windows PowerShell版本,打开 PowerShell,输入:

$PSVersionTable

如果看到:

  5.1.xxxxx → 是系统自带 Windows PowerShell

  7.x.x → 是新版 PowerShell 7
如果是5开头的版本,需要更新PowerShell,否则以后安装C++库时会失败。打开 https://github.com/Microsoft/vcpkg找到最新的Release版本,下载安装即可。安装完成后,修改PowerShell的默认配置,如下图:
在这里插入图片描述
选择新安装的PowerShell
在这里插入图片描述

  下面开始安装vcpkg
  打开git bash,开始clone vcpkg, 命令:

git clone https://github.com/microsoft/vcpkg.git

  如果网络不好,可能无法clone, 需要有合理良好的网络环境。vcpkag clone ok后,cd到vcpkg目录,执行脚本bootstrap-vcpkg.bat下载vcpkg.exe,如下图:
在这里插入图片描述

  执行结束之后在当前目录就可以看到vcpkg.exe, 如下图:

在这里插入图片描述

三、vcpkg具体使用

1、演示安装jsoncpp库

  将vcpkg.exe目录添加到系统path, 以后在任意目录都可以执行vcpkg.exe命令了,但是安装的文件依然是在vcpkg目录,安装第三方库的命令:

vcpkg install [name]

  比如安装jsoncpp库,输入以下命令进行安装

.\vcpkg install jsoncpp

  默认安装的是32位(现在基本是x64版本)的,如下图

在这里插入图片描述

  首次安装时会比较慢,耐心等待。
  库的安装位置
在这里插入图片描述

2、指定位数安装

  指定版本安装前,先查找是否存在对应的版本,命令

.\vcpkg search 库的名字

  例如查找asdf库是否存在

在这里插入图片描述
  asdf这个库显然是没有的,下面看看ffmpeg是否有

在这里插入图片描述

  当然去官网也可以查看,在官网可以明确的知道支持哪些版本
在这里插入图片描述

  如果需要指定版本安装,比如安装64位jsoncpp的,命令如下:

vcpkg install jsoncpp:x64-windows

32位

vcpkg install jsoncpp:x86-windows

  如下图

在这里插入图片描述

3、查找支持的系统架构

  如何查看版本位数呢,输入如下命令:

./vcpkg help triplet

  如下图
在这里插入图片描述

4、查看已经安装了哪些库

  命令

./vcpkg list

  输入 ./vcpkg list,如下图
在这里插入图片描述

5、如何卸载vcpkg

  直接删除目录即可

四、如何集成到visual studio

下面介绍如何把vcpkg集成到visual studio。

1、集成到Visual Studio全局

  集成到Visual Studio全局,此种情况所有项目都可以使用vcpkg的库,命令如下:

 .\vcpkg integrate install

注意:部分库在vs里使用可能有问题,例如没有debug版本,导致编译链接失败,此时需要自己下载源码编译,再添加到项目中。

2、移除全局集成

  移除全局集成只要执行下列命令即可:

 .\vcpkg integrate remove

3、集成到工程

 .\vcpkg integrate project

五、集成到CMake

  现在的Visual Studio已经支持CMake了,在cmake中集成只要在cmake文件中加入下面这句话即可。

-DCMAKE_TOOLCHAIN_FILE=<vcpkg_dir>/scripts/buildsystems/vcpkg.cmake"

六、如何使用vcpkg下载好的库

  建议还是copy到项目目录,去vcpkg的packages目录找到各个库的include, lib, dll, 注意lib目录默认是release版,debug的lib dll需要去debug目录拷贝.

  mac、linux也可以使用,按照官网的指引进行安装即可。

七、vcpkg常用命令

设置并发编译
set VCPKG_MAX_CONCURRENCY=12

八、需要注意的地方

  如果电脑上安装了多个vs版本,比如同时安装了vs2019和vs2022, 可能以vs2022来安装,会导致vs2019上无法使用vcpkg的库

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐