vcpkg的使用详解

本文介绍了vcpkg,一个用于C和C++库的跨平台开源软件包管理器,详细阐述了如何在Windows、Linux和macOS上安装和配置,包括PowerShell版本要求、使用git克隆vcpkg、常见命令以及与VisualStudio的集成过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vcpkg作用:
C 和 C++ 库的跨平台开源软件包管理器,它大大简化了 Windows、Linux 和 macOS 上第三方库相关的下载和配置操作。
在这里插入图片描述
使用流程:
(1)安装7.2版本的powerShell

后面在用powerShell安装vcpkg各种开源库时会报如下错误
在这里插入图片描述
使用vcpkg时,PowerShell版本需要比较新,建议安装ps7以上的版本。右键【windows开始】打开Windows PowerShell, 输入 $PSVersionTable可以查看版本,如下图
在这里插入图片描述
我现在的版本是5.1,在使用vcpkg时,提示需要使用7.2版本。powershell release下载路径 https://github.com/PowerShell/PowerShell/releases 找到7.2.11下载,下载完全下一步安装,安装成功会自动在环境变量加上。然后可以正常运行powerShell7

(2)首先在某个目录clone vcpkg
选择某个目录利用Git拉取vcpkg代码:
$ git clone git@github.com:microsoft/vcpkg.git

拉取成功后目录内容如下所示:
在这里插入图片描述
(3)然后在vcpkg项目里输入下面命令下载vcpkg.exe
在这里插入图片描述
$ ./bootstrap-vcpkg.bat
在这里插入图片描述
如果外网还是下载失败,可以进入https://github.com/microsoft/vcpkg-tool/releases/download/2024-01-11/vcpkg.exe直接下载vcpkg.exe,然后拷贝到项目下
把vcpkg配置到环境变量(在vcpkg.exe目录用powerShell执行下面语句):
setx VCPKG_ROOT $pwd
在这里插入图片描述
(3)使用powershell安装vcpkg的各种库
注意:vcpkg 大量使用 psl 脚本,所以官方强烈推荐使用 PowerShell 而不是 CMD 命令行来执行各种操作。尽管在使用的时候兼容 CMD,但是在编译这一步,请使用 PowerShell,以下所有操作也如此
一些常用命令(git和powerShell都可执行):

先了解vcpkg一些常用的命令:
./vcpkg.exe search 查看vcpkg支持哪些开源库,比如QT,opencv
./vcpkg.exe help triplet 查看vcpkg支持的架构
在这里插入图片描述
./vcpkg.exe list 显示已经安装的开源库
./vcpkg.exe export jsoncpp:x64-windows --zip 导出已经安装的开源库
./vcpkg.exe remove jsoncpp:x64-windows 移除一个已经安装(编译)的开源库(只是移除二进制程序库,源码包和解压缩的源码没有删除)

安装开源库遇到的问题:
1、比如安装一个jsoncpp开源库:
./vcpkg.exe install jsoncpp 默认安装x86-windows版本
./vcpkg.exe install jsoncpp:x64-windows 加:x64-windows可安装x64版本
注意:安装开源库之前会先安装一些默认的库
在这里插入图片描述
但在安装这些库时容易显示安装失败,如下图:
在这里插入图片描述
这时手动拷贝http链接在网上手动下载,比如下载完PowerShell-7.1.0-win-x86.zip需要拷贝到D:\vcpkg\vcpkg\downloads目录下,再次执行之前的安装命令,powerShell会省去下载步骤直接解压。遇到其他库下载失败也可也采用这种方法。

在这里插入图片描述
注意:如果是手动下载的包或者文件需要把名字改为->符号后的名字,然后放到downloads文件夹下,powerShell名字为PowerShell-7.2.11-win-x86.zip,nuget名字为dbb8c13d-nuget.exe

在安装opencv过程中显示flatbuffers:x64-windows failed失败,那就手动下载这个包
在这里插入图片描述
需要把这个包名字改为google-flatbuffers-v23.5.26.tar.gz然后放到downloads文件夹下。
有些情况可能无法直接在github上下载,如直接打开下面链接显示无效:
在这里插入图片描述
原因:
在这里插入图片描述
修改办法:
在这里插入图片描述
在这里插入图片描述
$url = ‘https://github.com/xxx’
$outputFile = ‘opencv_patch.patch’
Invoke-WebRequest -Uri $url -OutFile $outputFile

(4)集成到visual studio

1、vcpkg安装nuget插件
目的是能够让VS项目使用vcpkg安装的库
在这里插入图片描述
安装成功后会在vcpkg目录下有vcpkg.D.vcpkg.1.0.0.nupkg文件

2、将vcpkg集成到VS
第一种方法:集成到VS全局,此种情况所有项目都可以使用vcpkg的库(没有试过有没有用)
./vcpkg.exe integrate install 将所安装的包集成到VS
./vcpkg.exe integrate remove 删除与VS的集成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二种方法:集成到具体工程
集成到工程(VS项目能直接调用第三方库,不需要配置include/lib/dll文件,这是针对非cmake项目的使用),注意:部分库在vs里使用可能有问题,例如没有debug版本,导致编译链接失败,此时需要自己下载源码编译,再添加到项目中。
操作流程:
VS——工具——NuGet包管理器——程序包管理设置——程序包源——设置.nupkg包路径(之前已经把nupkg文件下载到vcpkg目录下)——点击更新——点击确定
在这里插入图片描述
对需要使用vcpkg库的工程右键——管理NuGet程序包(程序包源选择自己设置的)——安装.nupkg包
在这里插入图片描述
安装成功后项目中有对应vcpkg配置
在这里插入图片描述
如果vcpkg安装了jsoncpp库,可以直接使用jsoncpp库:
在这里插入图片描述
同时debug目录下也能发现第三方库的dll
在这里插入图片描述

结尾:
在cmake项目中使用vcpkg下载的库:
#一个完整的项目只能使用一次vcpkg库的调用,不然会报递归错误#要放在主cmakelist中,不然报递归错误Maximum recursion depth of 100 exceeded
#这个只能放在主cmakelist中
include(“$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake”)

如果涉及到vcpkg.json在线下载依赖库失败就用下面方法:
#在vcpkg.json下载依赖库失败时自动使用vcpkg库中已有的库
list(APPEND CMAKE_PREFIX_PATH “$ENV{VCPKG_ROOT}/installed/x64-windows”)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦回阑珊

一毛不嫌多,一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值