教程:从基于 Git 的注册表安装依赖项
vcpkg 使用称为注册表的概念来管理包的存储库。 默认情况下,vcpkg 从 https://github.com/Microsoft/vcpkg 的公共特选注册表查找库。 可以添加第三方或专用注册表,使其他包可供安装。
有关创建自己的注册表的信息,请阅读将包发布到注册表的教程。
注册表使用 vcpkg-configuration.json
文件配置。
在本教程中,学习:
先决条件
- 终端
- C++ 编译器
- vcpkg
- CMake
1 - 创建项目
在新文件夹中,创建以下项目文件:
源文件 (main.cpp
):
#include <iostream>
#include <beison.h>
int main()
{
beison::Object obj;
obj.insert("name", beison::Value::string("demo"));
std::cout << beison::stringify(obj) << std::endl;
return 0;
}
CMake 项目文件 (CMakeLists.txt
):
cmake_minimum_required(VERSION 3.18)
project(demo CXX)
add_executable(main main.cpp)
find_package(beicode CONFIG REQUIRED)
find_package(beison CONFIG REQUIRED)
target_link_libraries(main PRIVATE beicode::beicode beison::beison)
2 - 创建清单和配置文件
运行下面的命令:
vcpkg new --application
new
命令将创建两个文件:清单 (vcpkg.json
) 文件和配置 (vcpkg-configuration.json
) 文件。 通常,该命令需要提供 --name
和 --version
参数,但由于本教程是最终用户应用程序,因此我们改用 --application
选项。
生成的文件将包含以下内容:
vcpkg.json
{}
vcpkg-configuration.json
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
}
]
}
生成的配置文件包括两个注册表定义。 default-registry
指向 https://github.com/Microsoft/vcpkg 的特选 vcpkg 注册表,使用最新提交作为基线;以及额外的 "artifacts"
注册表,该注册表对于本教程来说并非必需,可以删除。
3 - 将专用注册表添加到 vcpkg 配置文件
源代码引用了 vcpkg 特选注册表中不可用的两个库。 为了满足这些依赖项,我们需要添加 https://github.com/microsoft/vcpkg-docs 作为附加注册表。
将 vcpkg-configuration.json
的内容修改为:
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg-docs",
"reference": "vcpkg-registry",
"baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
"packages": [ "beicode", "beison" ]
}
]
}
配置文件添加外部注册表作为 beicode
和 beison
包的源。 附加注册表必须显式声明其使用 "packages"
列表提供的包。 vcpkg 将包名称解析为注册表时,附加注册表中未找到的任何包名称都将默认为 "default-registry"
。 在注册表文档中了解有关包名称解析的详细信息。
4 - 从注册表安装包
将注册表添加到配置文件后,无需执行任何特殊操作即可从中安装包。遵循通常的安装机制时,vcpkg 会透明地将 vcpkg.json
中的包名称解析为正确的注册表。
在 vcpkg.json
文件中添加 beicode
和 beison
依赖项:
vcpkg add port beicode beison
构建并运行项目(将 $VCPKG_ROOT
替换为你的 vcpkg 安装路径):
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build
运行该程序,输出应该如下所示:
{
"name": "demo"
}