vcpkg是一个C++的包管理器。类似Python中的pip。安装后可以直接通过命令下载一些C++的包,省的自己编译配路径。安装后的包都被vcpkg统一保存,统一配置路径。VS中哪个项目需要,就将其配置到某个项目中,当然也可以全局配置。
1、下载vcpkg:
git clone https://github.com/microsoft/vcpkg
将vcpkg这级目录添加到环境变量
【我的目录】D:\13vcpkg\vcpkg
2、安装vcpkg:
运行bootstrap-vcpkg.bat
这一步就是会在线下载一个vcpkg.exe到目录
假如bat运行失败,可以手动到提示地址下载,放在vcpkg目录下即可
然后执行(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe integrate install
这时候可以查看一下支持的库列表
(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe search >支持列表.txt
目前2023年4月17日是有4500多个库
3、测试一下:
比如安装一个jsoncpp试试
(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe install jsoncpp
warning: Starting with the September 2023 release, the default triplet for vcpkg libraries will change from x86-windows to the detected host triplet (x64-windows). To resolve this message, add --triplet x86-windows to keep the same behavior.
Computing installation plan...
A suitable version of cmake was not found (required v3.25.1) Downloading portable cmake 3.25.1...
Downloading cmake...
https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-i386.zip->D:\13vcpkg\vcpkg\downloads\cmake-3.25.1-windows-i386.zip
Downloading https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-i386.zip
【注】这里会检查一些依赖项,缺少的话就会主动下载,但是可能会很慢,可以自己复制链接使用迅雷下载,然后把下载的文件放到vcpkg文件夹下的downloads文件夹下
这个文件夹是初始没有的,安装库的时候会自动创建
如果不指定安装的架构,vcpkg默认把开源库编译成x86的Windows版本的库。
那如果要安装编译某一个架构的开源库,我们该怎么写呢?我们只需要在需要安装的包后面指定相应的triplet即可。
例如我们需要编译64位版本的jsoncpp,那么执行如下命令即可。
.\vcpkg.exe install jsoncpp:x64-windows
(base) PS D:\13vcpkg\vcpkg> .\vcpkg.exe install jsoncpp
warning: Starting with the September 2023 release,
the default triplet for vcpkg libraries will change from
x86-windows to the detected host triplet (x64-windows).
To resolve this message, add --triplet x86-windows to keep the same behavior.
这是一个警告信息,意思是从2023年9月的vcpkg版本开始,
默认的triplet(体系结构架构)将从x86-windows更改为检测到的主机triplet(x64-windows)。
这意味着如果您使用的是x86架构的计算机,您需要在使用vcpkg时添加一个额外的参数"--triplet x86-windows",
以保持与以前版本的兼容性,否则您可能会遇到一些兼容性问题。
vcpkg是一个开源的C++库管理器,允许用户在Windows、Linux和macOS等平台上进行C++库的安装和管理。
triplet是一个用于指定平台、体系结构和编译器的组合参数,vcpkg使用它来下载和编译库。
4、移除安装包
移除一个已经安装(编译)的开源库
如果移除一个已经安装的开源库,那么执行remove指令即可。比如我们要移除jsoncpp,那么执行命令:
.\vcpkg.exe remove jsoncpp
注意:
这个时候只是移除了默认的x86-winodws版本的文件,如果有其他平台的版本需要移除,需要制定相应的triplet。
移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除。
5、列出已经安装的开源库
执行list指令即可,例如:
.\vcpkg.exe list
6、导出已经安装的开源库
有的时候,一个项目组中有很多人,不需要每个人都参与编译。
一个人编译好所有开源库后到处给别人即可。
有的时候也是出于备份的目的,也会导出已经安装的开源库。
导出可以执行export指令。例如,我要导出jsoncpp库,那么执行:
.\vcpkg.exe export jsoncpp --7zip
注意,导出时必须指定导出的包格式。vcpkg支持5种导出包格式,有:
参数 格式
–raw 以不打包的目录格式导出
–nuget 以nuget包形式导出
–ifw 我也不知道这是啥格式
–zip 以zip压缩包形式导出
–7zip 以7z压缩包形式导出
7. Vcpkg和Visual Studio的集成
7.1. 什么是集成?
上面我们已经安装了一些第三方库,那如何使用呢?常规情况下,我们需要设置include目录、lib目录等,会有很多工作量。Vcpkg提供了一套机制,可以全自动的适配目录,而开发者不需要关心已安装的库的目录在哪里,也不需要设置。这是Vcpkg的一大优势。
7.2. 集成到全局【一般不会这样操作,不过也没关系,反正可以随时取消全局集成】
“集成到全局”适用于Visual Studio开发环境和msbuild命令行。执行命令:
.\vcpkg integrate install
当出现“Applied user-wide integration for this vcpkg root.”字样的时候,说明已经集成成功。这时候可以在任意的工程中使用安装好的第三方库。
7.3. 移除全局集成
移除全局集成只要执行下列命令即可:
.\vcpkg integrate remove
【 .\vcpkg integrate install 这样操作之后,所有的VS项目中,在外部包含目录下都会有计算值,就是会被添加路径
这时候打开VS就已经被设置好了全局集成
但大多数时候我们并不想这样,而是哪个项目需要就添加到哪个项目
这时候可以移除全局集成,但是要把VS关闭重新打开,才会生效】
7.4. 集成到工程
上面已经可以集成到全局,为什么还要“集成到工程”呢?因为在大部分情况下,我们不希望集成到全局,毕竟有很多第三方库我们希望自定义处理一下,或者干脆不想集成第三方库。那么集成到工程是最灵活的处理方式。也是工程级项目推荐的处理方式。
“集成到工程”是整个vcpkg中最复杂的一项,它需要利用Visual Studio 中的nuget插件来实现。我们接下来一步一步来说。
7.4.1. 生成配置
执行命令
.\vcpkg integrate project
这时候会在“<vcpkg_dir>\scripts”目录下,生成nuget配置文件.
其中<vcpkg_dir>是指vcpkg实际所在目录。
7.4.2. 基本配置
打开Visual Studio,点击菜单“工具->NuGet包管理器->程序包管理器设置”,进入设置界面,点击“程序包源”。
点击“加号”增加一个源。修改源的名字为vcpkg。在“源”的选项中点击右侧的"…"选择vcpkg目录下的“scripts\buildsystems”目录,然后点击右侧的“更新按钮”。
点击“确定”,关闭设置对话框。
到此,全局性的设置已经完成,以后不必再重复设置了。
7.4.3. 工程配置
用Visual Studio 打开一个工程或解决方案。右键点击需要设置的工程,选择“管理NuGet程序包”。在右上角的“程序包源”中选择刚刚设置的“vcpkg”。这样在“浏览”选项卡中就可以看到“vcpkg.H.Repos.vcpkg”。点击最右侧的“安装”。这样就可以集成到某个工程了。
主要参考:https://blog.csdn.net/whl0071/article/details/124347065