Visual Studio中集成的vcpkg
vcpkg:Visual Studio 2022中的C++库管理器
Vcpkg 是一个 C++ 库管理器,它可以帮助你在 Windows、Linux 和 MacOS 上安装和使用第三方库。它支持超过 2000 个开源库,包括 Boost、OpenCV、Qt 等。Vcpkg 还可以自动处理库之间的依赖关系,让你的开发过程更加方便。
在本文中,我将介绍如何在 Visual Studio 2022 中安装和使用 vcpkg,以及如何在历史版本的 Visual Studio 中使用 vcpkg。也会列出一些 vcpkg 目前存在的问题和限制。
如何在Visual Studio 2022中安装vcpkg
从 Visual Studio 2022 开始,vcpkg 已经被包含在 Visual Studio Installer 中,你可以直接在安装或修改 Visual Studio 时选择安装 vcpkg。具体步骤如下:
1. 打开 Visual Studio 安装器,选择安装或修改 Visual Studio 2022。
2. 在安装页面中,选择你需要的工具选项,例如“C++桌面开发”。
3. 在组件页面中,勾选 “vcpkg - C++库管理器”。
4. 点击修改或安装,等待安装完成。
5. 安装完成后,你就可以使用 vcpkg 了。
如何在Visual Studio 2022中使用vcpkg
在 Visual Studio 中的 vcpkg 只能使用 manifest 模式,无法使用经典模式。因为在使用经典模式时需要安装 vcpkg 的 ports文件夹,但是当前 vcpkg 目录位于 Visual Studio 的安装目录下,没有对该目录的写入权限,所以 ports 安装会失败。
如果要在 Visual Studio 工程中以 manifest 模式使用 vcpkg,需要进行设置:在 “配置属性 -> vcpkg” 中将“use vcpkg manifest”置为“是”,然后保存。
Manifest 模式使用方法见链接:Manifest 使用示例 - Msbuild 工程 - vcpkg_C++包管理器 - 博客园 (cnblogs.com)
如何在旧版本的Visual Studio中使用vcpkg
如果你使用的是旧版本的 Visual Studio(2019或更低),你需要手动安装 vcpkg,并设置 CMake 工具链文件来指向 vcpkg.cmake 文件。这样,CMake 就可以自动找到并链接你安装的库。具体步骤如下:
1. 打开命令提示符,切换到你想要安装 vcpkg 的目录,例如 C:\src。
2. 输入以下命令,克隆 vcpkg 的仓库:`git clone https://github.com/microsoft/vcpkg`。
3. 输入以下命令,进入 vcpkg 的目录:`cd vcpkg`。
4. 输入以下命令,运行 bootstrap 脚本:`bootstrap-vcpkg.bat`。
5. 等待脚本完成后,你就可以使用 vcpkg 了。
6. 打开 Visual Studio,创建或打开一个 CMake 项目。
7. 在解决方案资源管理器中,右键单击 CMakeLists.txt 文件,选择打开文件夹设置。
8. 在设置页面中,选择 “配置 -> CMake -> 工具链”。
9. 在工具链文件中,输入内容:`C:\src\vcpkg\scripts\buildsystems\vcpkg.cmake`,点击确定,保存设置更改。
10. 在命令提示符中,切换到 vcpkg 的目录,输入以下命令,安装你需要的库:`vcpkg install portName`。
11. 然后运行以下命令:`vcpkg integrate install`。
12. 回到 Visual Studio,重新生成项目。
13. 在代码中,你就可以使用 `#include <headfile.h>` 指令来引用库的头文件了。
你也可以参考以下博客中对于 vcpkg 的使用方法:
MSbuild 工程中使用 vcpkg: 在MSbuild工程中使用vcpkg提供的库 - vcpkg_C++包管理器 - 博客园 (cnblogs.com)
CMake 工程中使用 vcpkg: 在CMake工程中使用vcpkg提供的库 - vcpkg_C++包管理器 - 博客园 (cnblogs.com)
Visual Studio 集成的vcpkg存在的已知问题
以下功能尚不适用于 vcpkg 的内部构件,但计划在 Visual Studio 未来版本中修复:
-
“工具 > 选项 > vcpkg 包管理器设置” 允许你通过自定义一个 vcpkg 库来管理 vcpkg artifacts,该设置仍然存在并可用于其预期目的,但不会替换其他上下文中的 vcpkg 内置副本,例如在终端。将来,我们计划使用一种方法可以全局设置它们,而不必使用 `vcpkg integrate install` 命令。
-
无需运行 `vcpkg integrate install` 命令,即可使用 vcpkg 安装的包。
-
当智能检测方法检查到一个库的代码未被找到或者没有被 manifest 模式安装时可以快速的提示结果。
你可以在 vcpkg 的 GitHub 页面上查看更多的问题和建议:microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS (github.com)
结语
Vcpkg 是一个非常有用的 C++ 库管理器,它可以让你在 Visual Studio 中轻松地安装和使用第三方库。它支持多种操作系统和开源库,还可以自动处理依赖关系。如果你是一个 C++ 开发者,我强烈建议你尝试一下 vcpkg,它会给你带来很多便利和乐趣。