【问题标题】:Swift Package with multiple swift versions and swift-tools-version具有多个 swift 版本和 swift-tools-version 的 Swift 包
【发布时间】:2019-12-02 00:13:36
【问题描述】:

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

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

如果 swift-tools-version 设置为 4.0,.v5swiftLanguageVersions 内部将无法识别

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

这样做的正确方法是什么?或者一旦你更新到最新版本的 swift,这个包就不再支持旧版本了?

【问题讨论】:

    标签: swift swift-package-manager


    【解决方案1】:

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

    见:https://forums.swift.org/t/swiftlanguageversions-best-practices-for-libraries/18443

    【讨论】:

      【解决方案2】:

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

      您也可以尝试使用条件编译在您的Package.swift 文件中添加不同版本的Package

      【讨论】:

      • 我刚试了一下,我的结论是我完全错了。自我提醒:永远不要那样做。它需要编译文件以确定使用哪个版本的 Swift 编译文件...
      猜你喜欢
      • 2022-09-29
      • 1970-01-01
      • 2020-04-06
      • 2019-03-31
      • 1970-01-01
      • 2022-09-25
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      相关资源
      最近更新 更多