为 macOS 构建

此主题描述了 Qbs 对于 macOS 的特定功能。

注意:Qbs 目前尚不支持 Swift 编程语言。

包含基于 Xcode 的开发和配置属性的 xcode 模块。

构建用户界面

包含用于构建 Interface Builder 文档、storyboards、资产目录和图标集的属性和规则的 ib 模块。

创建应用包

bundle 模块包含用于在 Apple 平台上构建和使用 Core Foundation 包(应用程序包和框架)的属性和规则。

要构建的应用程序产品作为包,或将动态或静态库产品作为框架,请添加对捆绑模块的依赖,并将 bundle.isBundle 属性设置为 true

Depends { name: "bundle" }
bundle.isBundle: true

Qbs 还提供了一些强大的功能,以帮助创建包含在包中的 Info.plist 文件。实际上,您根本不需要提供 Info.plist 文件。相反,Qbs 将根据产品中设置的模块属性自动生成一个包含必要键的文件。

如果您指定了 Info.plist 文件,Qbs 仍可能从其他来源注入额外的键到最终输出中。Info.plist 键的一个显著来源是作为编译其他资源(如资产目录、XIBs/NIBs 和故事板)的结果生成的 部分 Info.plist 文件。

您还可以使用 bundle.infoPlist 属性将一组键值对应用于最终 Info.plist。这可以用作磁盘上的实际 Info.plist 文件的替换,或者与之同时使用。

多架构和构建变体

Qbs 使用 multiplexing 来创建多架构 fat 二进制文件和多变体框架,其中单个框架可以包含 Apple 平台上库的发布和调试版本。

您可以设置 qbs.architectures 属性为一个 CPU 架构列表(例如 x86x86_64armv7aarmv7karm64),并将 qbs.buildVariants 属性设置为一个构建变体列表(例如 debugrelease),然后 Qbs 将透明地执行所需步骤以生成各种工件并将它们组合成一个打包文件。

由于各个构建配置完全独立,您可以在项目中继续使用如下条件分支

Properties {
    condition: qbs.buildVariant === "release"
    cpp.optimization: "small"
}

构建 macOS 光盘镜像

AppleDiskImageAppleApplicationDiskImage 元素依赖于 dmg 模块。前者表示一个基本的 Apple 光盘镜像产品,而后者扩展了前者,用于创建用于安装单个应用程序包的拖放光盘镜像安装程序。

例如,以下代码片段创建了一个带有自定义背景和图标布局的macOS磁盘映像。

AppleApplicationDiskImage {
    targetName: "cocoa-application-" + version
    version: "1.0"

    files: [
        "CocoaApplication/dmg.iconset",
        "CocoaApplication/en_US.lproj/LICENSE",
        // comment out the following line to use a solid-color background
        // (see dmg.backgroundColor below)
        "CocoaApplication/background*"
    ]

    dmg.backgroundColor: "#41cd52"
    dmg.badgeVolumeIcon: true
    dmg.iconPositions: [
        {"x": 200, "y": 200, "path": "Cocoa Application.app"},
        {"x": 400, "y": 200, "path": "Applications"}
    ]
    dmg.windowX: 420
    dmg.windowY: 250
    dmg.windowWidth: 600
    dmg.windowHeight: 422 // this includes the macOS title bar height of 22
    dmg.iconSize: 64
}

此外,Qbs支持多语言许可协议提示,当DMG被打开时会出现,具有完整的Unicode和富文本格式支持。

©2023 Qt公司有限公司。本文件中所包含的文档贡献是各自的版权所有者的版权。本提供的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3许可的。Qt及其相应标志是Qt公司有限公司在芬兰和/或其他国家的商标。所有其他商标均为各自所有者财产。