三元组
三联密码是一种在交叉编译中使用的标准术语,用于以单个方便的名称完全捕获目标环境(CPU、OS、编译器、运行时等)。
在 vcpkg 中,三联密码用于描述每个库的虚构“目标配置集”。 在三联密码中,库通常使用相同的配置生成,但这不是一项要求。 例如,可以有一个三联密码负责静态生成 openssl
和动态生成 zlib
,一个负责静态生成两者,一个负责动态生成两者(全部针对同一个目标 OS 和体系结构)。
一个生成将会使用两个三联密码中的文件:即目标三联密码和主机三联密码。 如果需要为不同的库应用不同的设置,则必须使用该设置组合创建一个自定义三联密码。 请参阅每个端口的自定义,了解如何实现。
vcpkg 提供许多常见平台和配置的预定义三联密码。 运行 vcpkg help triplet
以获取环境中可用的三联密码列表。
三联密码选择
要选择目标三元组:
- 在经典模式下:
- 使用三元组名称限定包引用,例如
zlib:x64-windows-static-md
。 - 通过
--triplet=<triplet>
。
- 使用三元组名称限定包引用,例如
- 在 CMake 中:
- 在 MSBuild 中:
- 设置
VcpkgTriplet
。
- 设置
为当前计算机选择主机三联密码:
- 在经典模式下:
- 在 CMake 中:
- 在 MSBuild 中:
- 设置
VcpkgHostTriplet
。
- 设置
社区三联密码
文件夹中包含 triplets\community
的三联密码不是由特选注册表的持续集成测试的,但通常由社区请求。 由于我们没有持续覆盖范围,因此端口更新可能会中断与社区三联密码的兼容性。 我们很乐意接受和审查旨在解决这些三联密码问题的贡献。
使用社区三联密码时,将在包安装过程中打印如下所示的消息:
-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: D:\src\vcpkg\triplets\community\x86-uwp.cmake
添加或替换三联密码
可以通过替换现成的三联密码或为特定项目创建新的三联密码来扩展 vcpkg。
首先,将内置三联密码文件从 triplets\
目录复制到另一个文件系统位置。 然后,在与 vcpkg 交互时,将该目录添加到覆盖三联密码路径列表。
- 在清单模式下,可以使用
$.vcpkg-configuration.overlay-triplets
。 - 从 CMake 使用 vcpkg 时,可以设置
VCPKG_OVERLAY_TRIPLETS
。 - 从 MSBuild 使用 vcpkg 时,可将
--overlay-triplets=...
添加到 MSBuild 其他选项。 - 直接使用 CLI 时,可以传递
--overlay-triplets=...
。 - 可将
$VCPKG_OVERLAY_TRIPLETS
环境变量设置为覆盖路径列表。
请参阅我们的覆盖三联密码示例,了解更加详细的分步教程。
注意
三联密码名称只能包含小写字母数字字符和连字符。
注解
运行任何 vcpkg 命令时的默认三联密码是 %VCPKG_DEFAULT_TRIPLET%
或者特定于平台的选择(如果该环境未定义)。
- Windows:
x64-windows
- Linux:
x64-linux
- OSX:
x64-osx
建议在创建新的三联密码时使用系统命名方案。 Android 工具链命名方案是个不错的启发:https://developer.android.com/ndk/guides/standalone_toolchain.html。