复用

复用是 Qbs 的一个高级特性,它允许产品在一个可选的最终汇总步骤中透明地构建多个遍历,这个最终步骤可以将初始遍历输出的工件以某种方式组合或操作。

复用特性用于实现某些平台特定的行为:具体来说,它允许在 Apple 平台上编译应用程序和库为包含多个 CPU 架构的胖二进制文件,创建包含多个变体(例如,调试和发布版本混合)的 Apple 框架,以及创建包含为多个 Android ABIs 构建的本地代码的 Android 应用程序和库包。

可以通过qbs.architectures属性(它映射到qbs.architecture),qbs.buildVariants属性(它映射到qbs.buildVariant),以及qbs.profiles(它映射到Project.profile))进行产品复用。

例如,要构建包含两个架构的“胖”iOS二进制文件,可以使用以下命令

qbs build modules.qbs.targetPlatform:ios modules.qbs.architectures:arm64,armv7a

注意:复用的实现细节可能会更改。

产品复用通过检查Product.multiplexByQbsProperties属性来工作,该属性可以设置为你的产品应复用的属性列表。例如,multiplexByQbsProperties可能包含两个字符串,"architectures""buildVariants"。Qbs将评估qbs.architecturesqbs.buildVariants的值,这两个值可能包含值["x86", "x86_64"]["debug", "release"]。Qbs将构建所有可能的产品配置:(x86, debug)(x86, release)(x86_64, debug)(x86_64, release)

如果Product.aggregate属性设置为true,则产品还将被构建第五次,复用属性的值将被保留为未定义。汇总产品将自动依赖于原始的四个产品实例,这允许它收集它们的输出工件并对其进行操作。

汇总产品用于将单独复用实例的目标工件合并成一个最终的汇总工件的情况。在 Apple 平台上,捆绑产品使用汇总产品创建独立于特定架构或构建版本的捆绑工件(例如,Info.plistPkgInfo)。此外,它们使用lipo工具将不同架构(如x86x86_64)构建的本地区域代码连接到包含在应用程序包中的最终多架构胖二进制文件。

©2023年Qt公司有限公司对文档的贡献均为其各自所有人的版权。本提供的文档遵循由自由软件基金会发布的GNU自由文档许可证第1.3版的条款。Qt及其相关标识是Qt公司股份有限公司在芬兰以及全球其他国家的商标。所有其他商标均为各自所有者的财产。