跳到主要内容

三元组(Triplets)

三元组(Triplet)是交叉编译中的标准术语,用于将目标环境(CPU、操作系统、编译器、运行时等)浓缩为一个简洁的名称。

在 kmpkg 中,三元组为每个库描述了一组虚拟的“目标配置集”。同一三元组内的库通常采用相同的配置构建,但这并非强制要求。例如,针对同一目标操作系统和架构,你可以创建三个三元组:一个将 openssl 静态构建而 zlib 动态构建,一个将两者均静态构建,另一个将两者均动态构建。

一次构建最多会使用两个三元组的文件:目标三元组(target triplet)和宿主三元组(host triplet)。若需为不同库应用不同配置,必须创建包含该配置组合的自定义三元组。具体实现方法请参阅按端口自定义配置

kmpkg 内置了适用于多种常见平台和配置的三元组。运行 kmpkg help triplet 可查看当前环境中可用的三元组列表。

三元组选择

选择目标三元组(Target Triplet)

选择当前机器的宿主三元组(Host Triplet)

社区三元组(Community Triplets)

triplets\community 目录下的三元组未经过官方维护注册表的持续集成(CI)测试,但为社区常用需求。由于缺乏持续测试,端口更新可能会破坏与社区三元组的兼容性。我们欢迎并审核旨在解决这些三元组问题的贡献。

使用社区三元组时,包安装过程中会打印如下提示信息:

-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: D:\src\kmpkg\triplets\community\x86-uwp.cmake

添加或替换三元组

你可以通过替换内置三元组或创建新三元组来扩展 kmpkg,以适配特定项目需求。

步骤如下:

  1. triplets\ 目录中的内置三元组文件复制到其他文件系统路径。
  2. 与 kmpkg 交互时,将该目录添加到覆盖三元组路径列表中。

配置方式如下:

如需详细操作指南,请参阅 覆盖三元组示例

信息

三元组名称仅可包含小写字母、数字和连字符。

注意事项

运行任何 kmpkg 命令时,默认三元组为 %KMPKG_DEFAULT_TRIPLET%;若该环境变量未定义,则使用平台特定的默认值:

  • Windows:x64-windows
  • Linux:x64-linux
  • macOS:x64-osx

创建新三元组时,建议采用系统化的命名方案。Android 工具链的命名方案可作为参考: https://developer.android.com/ndk/guides/standalone_toolchain.html