跳到主要内容

为kmpkg打包GitHub仓库示例:libogg

创建清单文件

清单文件(命名为kmpkg.json)是一个 JSON 文件,用于描述包的元数据。

对于 libogg,我们需要在 ports/libogg/ 目录下创建 kmpkg.json 文件,内容如下:

{
"name": "libogg",
"version-string": "1.3.3",
"description": "Ogg 是一种多媒体容器格式,也是 Xiph.org 多媒体编解码器的原生文件和流格式。",
"homepage": "https://www.xiph.org/ogg/"
}

你可以执行 kmpkg format-manifest ports/libogg/kmpkg.json 命令,按照 kmpkg 的规范格式化该清单文件。

创建端口文件

portfile.cmake 文件用于描述如何构建和安装包。首先,我们通过 kmpkg_from_github 函数从 GitHub 下载项目源码:

kmpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO xiph/ogg
REF v1.3.3
SHA512 0bd6095d647530d4cb1f509eb5e99965a25cc3dd9b8125b93abd6b248255c890cf20710154bdec40568478eb5c4cde724abfb2eff1f3a04e63acef0fbbc9799b
HEAD_REF master
)

需重点更新的参数说明:

  • REPO:填写 GitHub 仓库路径(格式为「用户名/仓库名」);
  • REF:指定要使用的稳定标签/提交记录;
  • SHA512:填写下载文件的校验和(快速获取方式:先将其设为 0,尝试安装该包,然后从报错信息中复制正确的校验和)。

最后,通过 CMake 配置项目、安装包,并复制许可证文件:

kmpkg_cmake_configure(SOURCE_PATH ${SOURCE_PATH})
kmpkg_cmake_install()
kmpkg_install_copyright("${SOURCE_PATH}/COPYING")

如果你的包需要额外配置项,请参考 kmpkg_cmake_configurekmpkg_cmake_install 的官方文档。

完成上述步骤后,即可运行 kmpkg install libogg 命令构建并安装该包。

推荐的示例端口文件

kmpkg 官方仓库的 ports/ 目录 中包含大量可参考的端口文件示例,涵盖了非 CMake 构建的库:

  • 仅头文件库
    • rapidjson
    • range-v3
  • 基于 MSBuild 的库
    • chakracore
  • 非 CMake(自定义构建系统)的库
    • openssl
    • ffmpeg