vcpkg
vcpkg 是 Microsoft 和 C++ 社区维护的免费开放源代码 C/C++ 包管理器,可以近似地理解为python里的pip。在经典模式下,使用方式也和pip很像。中文互联网搜索如何在VS上安装、集成、使用vcpkg基本遵循git -> 添加环境变量 -> vcpkg install [packagename] 的经典模式。
然而VS在安装时明明集成了vcpkg,为什么还要额外安装一个呢?这一度使作为C++小白但同时又十分强迫症的我十分难受,今天有一点空闲时间,决定一定要把这个bug补上。
第一个报错
(base) PS C:\path\to\project> vcpkg install boost
error: 无法在当前工作目录之上找到清单(vcpkg.json)。
此 vcpkg 分发没有经典模式实例。
VS集成的vcpkg推荐使用清单模式 | Microsoft Learn,所以默认不支持经典模式 | Microsoft Learn。
解决方案:改用vcpkg install
命令
第二个报错
(base) PS C:\path\to\project> vcpkg install
error: `vcpkg install` 需要在经典模式下安装包的列表。
vcpkg install
命令需要在项目所在的同一目录中创建一个名为 vcpkg.json 的文件,以声明源文件的依赖项。教程:从清单文件安装依赖项 | Microsoft Learn
解决方案:创建 vcpkg.json 文件,内容为
{"dependencies": ["cxxopts", "fmt", "range-v3" ]}
第三个报错
(base) PS C:\path\to\project> vcpkg install
error: 此 vcpkg 实例需要具有指定基线的清单才能与端口交互。
请将 “builtin-baseline” 添加到清单或添加 “vcpkg-configuration.json”,以重新定义默认注册表。
vcpkg.json 参考 | Microsoft Learn:尚未尝试
版本控制参考 | Microsoft Learn
解决方案:向 vcpkg.json 文件中添加 "builtin-baseline"
{
"name": "project",
"version": "1.0.0",
"dependencies": ["cxxopts", "fmt", "range-v3" ],
"builtin-baseline":"9fd3bd594f41afb8747e20f6ac9619f26f333cbe"
}
第四个报错
(base) PS C:\path\to\project> vcpkg install
正在从 https://github.com/microsoft/vcpkg (HEAD) 提取注册表信息...
正在从 https://github.com/microsoft/vcpkg 提取基线信息...
error: 在 https://github.com/microsoft/vcpkg 的 9fd3bd594f41afb8747e20f6ac9619f26f333cbe 中找不到 cxxopts 的基线。
error: git 失败,退出代码: 128。
fatal: path 'versions/baseline.json' does not exist in '9fd3bd594f41afb8747e20f6ac9619f26f333cbe'
解决方案:版本控制参考 | Microsoft Learn:初始化baseline
(base) PS C:\path\to\project>vcpkg x-update-baseline --add-initial-baseline
已更新注册表“https://github.com/microsoft/vcpkg”: 基线“9fd3bd594f41afb8747e20f6ac9619f26f333cbe”->“136a0d8b8c4584e07e5b394d69e492f679d81737”
(base) PS C:\path\to\project>vcpkg install
完成!