概念:端口
vcpkg 中的端口是一种版本控制方案,可生成一组文件。 执行端口会通过生成新的标头或二进制文件来影响安装图表。 端口可能与其他端口有依赖关系,并且可能在启用某些功能时需要其他依赖项。 这些依赖项必须反映在端口元数据中。 端口至少包含:
- 有关包的元数据:名称、版本、支持的功能、依赖项等。
- 获取、生成(如有必要)和安装包的说明。
此外,端口可能还包括:
- 要应用于包的源代码的修补程序
- 与项目的生成系统集成的说明
Portfile (portfile.cmake
)
所有端口都必须包含 portfile(一个名为 portfile.cmake
的文件)。 端口文件是一个脚本,其中包含有关如何在 vcpkg 环境中生成和安装包的说明。 portfile 执行的一些常见任务包括:
- 下载包的源代码。
- 使用上游生成系统生成包。
- 将生成输出复制到 vcpkg 安装树。
- 安装生成系统集成文件。
vcpkg.json
文件 vcpkg.json
描述 vcpkg 端口中包含的包的元数据。 此文件定义包的名称、版本、说明、依赖项、支持的功能和平台之类的属性。有关详细信息,请参阅 vcpkg.json
文件参考。
CONTROL 文件
警告
CONTROL
文件已弃用,仅保留用作向后兼容。
vcpkg 中的 CONTROL
文件充当元数据文件,用于指定 vcpkg 可以安装的包的详细信息或“端口”。 这些文件已弃用,且大部分已替换为新端口的 vcpkg.json
清单文件。 但是,它们被保留用作向后兼容。 有关详细信息,请参阅 control-files。
修补文件
在某些情况下,端口可能包含修补文件。 这些文件对库的源代码进行了修改,这对于修复现有问题或保持与其他组件的兼容性至关重要。 在生成过程开始之前,修补程序将作为 portfile 执行的步骤的一部分进行应用,从而促进无缝且无错误的库集成。 有关详细信息,请参考 maintainer-guide。
端口类别
端口类别是维护者用来表述 vcpkg 中不同端口所扮演角色的口述术语。 虽然这些类别有助于描述一般功能,但值得注意的是,任何给定端口都可以属于多个类别,或者根本不属于任何类别,具体取决于其功能和用例。
标准端口
标准端口用作从源生成库或为仅限标头的库提供头文件的方案。 它包含获取、生成和安装库所需的说明和元数据。 特选注册表中的绝大多数库都是标准端口。
元端口
元端口用于对安装图表施加约束,而无需有自己的生成文件。 这些端口通常用于将一组相关库分组到单个名称下,或用作可替换组件的间接层。 例如,boost
是一个元端口,它以单个名称将各种 Boost 库组合在一起,以便更轻松地进行依赖项管理。
脚本端口
脚本端口包含主要用于 vcpkg 内部任务或供其他端口消耗的实用工具脚本。 这些端口支持对实用工具脚本进行版本控制,从而保持兼容性和标准化。 例如,vcpkg-cmake
是公开 vcpkg_cmake_configure()
帮助程序函数的脚本端口。
后续步骤
本文档概述了 vcpkg 中的端口,详细介绍了其基本元素和各种类别。 有关更高级的主题和详细指南,请参阅以下内容: