2.3 使用构建配置

原文链接: https://docs.swift.org/latest/documentation/packagemanagerdocs/usingbuildconfigurations/

2.3 使用构建配置

控制应用或包的构建配置。

概述

包管理器支持两种通用的构建配置:Debug(默认)和 Release。

Debug

默认情况下,运行 swift build 会使用调试配置构建包;你也可以显式使用 swift build -c debug。包管理器把构建产物放在 .build 文件夹下名为 debug 的目录中。以调试配置构建时,Swift 目标使用下列 Swift 编译器标志:

  • -Onone:不做任何优化进行编译。
  • -g:生成调试信息。
  • -enable-testing:启用 Swift 编译器的可测试性特性。

调试配置下的 C 语言目标使用下列标志:

  • -O0:不做任何优化进行编译。
  • -g:生成调试信息。

Release

要以发布模式构建,请输入 swift build -c release。包管理器把构建产物放在 .build 文件夹下名为 release 的目录中。以发布配置构建时,Swift 目标使用下列 Swift 编译器标志:

  • -O:带优化进行编译。
  • -whole-module-optimization:按模块整体优化输入文件,而不是逐个优化。

发布配置下的 C 语言目标使用下列标志:

  • -O2:带优化进行编译。

额外的编译标志

你可以通过三种不同方式向 C、C++ 或 Swift 编译器传递额外的标志:

  • 传给这些工具的命令行标志:像 -Xcc(用于 C 编译器)或 -Xswiftc(用于 Swift 编译器)这样的标志,会为清单中的所有目标传递相关标志。

  • 清单中的目标专属标志:使用 cSettings、swiftSettings 之类的选项,可以细致地控制特定目标的编译标志。

  • 目标 JSON 文件:当你已经有一套可用于所有目标的命令行标志时,把它们收集到一个 JSON 文件中,并通过 --destination example.json 用 extra-cc-flags 和 extra-swiftc-flags 传入。

一个区别是:在命令行通过 -Xcc 传入的 C 标志,或者通过清单的 cSettings 传入的 C 标志,出于便利也会提供给 Swift 编译器工具,而 extra-cc-flags 则不会。