Swift Package 具有多个 swift 版本和 swift-tools-version



如何创建一个支持多个 swift 版本的 swift 包?

我的代码在 swift 4.0、4.2 和 5.0 上编译得很好。如果我在 Package 中更新 swift-tools-version.swift那么我不能在 4.0 或 4.2 上使用它,但是如果我将 4.2 或 5.0 添加到 swiftLanguageVersions它无法识别版本枚举。

如果 swift-tools-version 设置为 4.0,则无法在 swiftLanguageVersions 中识别.v5

如果 swift-tools-version 更新到 5.0,那么该软件包将无法在 4.0 上运行

正确的方法是什么?或者一旦您更新到 swift 的最新版本,软件包就不再支持旧版本?

您可以为每个版本创建单独的 Package@swift-#.swift 文件,或者从 Swift 4.2 开始,您可以使用 .version("#") 枚举。

请参阅:https://forums.swift.org/t/swiftlanguageversions-best-practices-for-libraries/18443

我的方法是将swift-tools-version设置为您支持的最早版本的 Swift,并简单地忽略 swiftLanguageVersions 属性。到目前为止,它对我有用。

您还可以尝试使用条件编译在Package.swift文件中拥有不同版本的Package

最新更新