VS2022 vcpkg 清单模式 first step

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

完成!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容