端口(Ports)
kmpkg 中的“端口(Port)”是一个版本化的构建脚本,用于生成一组文件。执行端口会通过生成新的头文件或二进制文件来影响安装依赖图。端口可能依赖于其他端口,且在启用特定功能时可能需要额外的依赖项——这些依赖关系必须在端口的元数据中体现。一个端口至少包含以下内容:
- 包的元数据:名称、版本、支持的功能、依赖项等;
- 获取、(必要时)构建和安装包的指令。
此外,端口还可能包含:
- 应用于包源代码的补丁文件;
- 与项目构建系统集成的指令。
端口文件(portfile.cmake)
所有端口都必须包含一个端口文件(命名为 portfile.cmake)。该文件是一个脚本,包含在 kmpkg 环境中构建和安装包的指令。端口文件通常执行以下常见任务:
- 下载包的源代码;
- 使用上游构建系统构建包;
- 将构建输出复制到 kmpkg 安装目录树;
- 安装构建系统集成文件。
kmpkg.json
kmpkg.json 文件描述 kmpkg 端口中包含的包的元数据,定义包的名称、版本、描述、依赖项、支持的功能和平台等属性。
如需了解更多信息,请参阅 kmpkg.json 文件参考文档。
补丁文件(Patch files)
在某些场景下,端口可能包含补丁文件。这些文件包含对库源代码的修改,用于修复现有问题或保持与其他组件的兼容性。在构建过程开始前,补丁会作为端口文件执行步骤的一部分被应用,以确保库能够无缝、无错误地集成。如需了解更多信息,请参考 维护者指南。
端口分类
端口分类是维护者用于描述不同端口在 kmpkg 中作用的通俗术语。这些分类有助于说明端口的通用功能,但需注意:根据端口的特性和使用场景,单个端口可能属于多个分类,或不属于任何分类。
标准端口(Standard port)
标准端口是用于从源代码构建库或为仅含头文件的库提供头文件的构建脚本。它包含获取、构建和安装库所需的指令和元数据。官方维护的注册表中,绝大多数库都是标准端口。
元端口(Meta port)
元端口用于对安装依赖图施加约束,自身没有构建文件。这类端口通常用于将一组相关库归为一个名称,或作为可替换组件的间接引用层。例如,boost 是一个元端口,它将多个 Boost 库组合在一起,方便依赖管理。
脚本端口(Script port)
脚本端口包含实用脚本,主要用于 kmpkg 内部任务或供其他端口使用。这些端口支持实用脚本的版本控制,从而保持兼容性和标准化。例如,kmpkg-cmake 是一个脚本端口,它提供了 kmpkg_cmake_configure() 辅助函数。
后续步骤
本文概述了 kmpkg 中端口的基本要素和各类分类。如需了解更高级的主题和详细指南,请参考以下文档: