9.1.2 SwiftPM 6.3 发布说明

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

9.1.2 SwiftPM 6.3 发布说明

SwiftBuild:下一代构建系统的预览

SwiftBuild 正在开发中,用来取代当前的原生构建系统,并带来了若干关键改进。用现有原生(默认)构建系统能成功构建的包,应当无需改动 Package.swift 或源代码就能用 SwiftBuild 构建。

关于已知限制和平台特定问题的更多信息,参见 SwiftBuild 预览文档。

试用 SwiftBuild

你可以用 --build-system 标志预览这个构建系统:

# 使用 SwiftBuild 构建
swift build --build-system swiftbuild

# 使用 SwiftBuild 测试
swift test --build-system swiftbuild

# 使用 SwiftBuild 运行可执行文件
swift run --build-system swiftbuild MyExecutable

原生构建系统仍是默认选项,并继续得到完整支持。我们鼓励开发者试用 SwiftBuild,并就自己的体验提供反馈。

改进对 C 互操作性的构建插件支持

SwiftPM 现在正确支持由插件工具把 C 源文件生成到 C 模块目标中。此外,它还支持生成模块映射、头文件和 API notes。

这是一项实验性特性。要启用它,请在使用生成器插件的目标所对应的包清单(Package.swift)中给 swift 工具版本加上标签,如下所示:

1
// swift-tools-version: 6.3;(experimentalCGen)

这个实验模式有一些限制。对于给定的目标,只能生成一个模块映射。该模块映射所引用的头文件必须与该模块映射位于同一目录。为模块映射中的模块生成的任何 API notes 文件也是如此。

如果生成了模块映射,你就不能在目标的公共头文件路径中再提供一个模块映射。

为了便于找到生成的公共头文件,构建系统会把插件输出目录中的 include 目录加入该模块以及所有传递依赖它的模块的 include 路径。这个目录的名称目前是固定的。

这项功能在原生的构建系统和 SwiftBuild 中都可用。

改进对宏所用预编译 Swift Syntax 的支持

对于仅被宏使用的库,SwiftPM 增加了对使用 swift-syntax 预编译产物的更好支持。这让各个宏目标之间可以共享代码。

SwiftPM 现在能检测到这类库可能被非宏目标使用,并在检测到这种情况时禁用预编译产物。之所以禁用,是因为在链接时混用 swift-syntax 预编译产物与从源码构建的 swift-syntax 已经引发了许多问题。

符号图生成:控制继承的文档

生成符号图的命令插件现在可以控制是否包含继承来的文档,为不同的文档风格提供了更好的灵活性。

包特性:更易发现

新增的 swift package show-traits 命令让发现某个包支持哪些特性变得更容易。