一尘不染

使用Swift 5.1编译的模块不能由Swift 5.1.2编译器导入

swift

我有一个框架(在本例中为RxSwift),已使用Xcode 11.0将其编译为传统RxSwift.framework样式包

这很好地导入了Xcode 11.0和11.1,从没有任何问题

今天,在Apple发布Xcode 11.2时,我进行了升级,并看到以下错误:

使用Swift 5.1编译的模块不能由Swift 5.1.2编译器导入

我曾经习惯过快速编译器不匹配,而且我知道我可以使用Xcode 11.2重新编译RxSwift并继续进行,但是Swift 5.1的头条功能是
模块稳定性

我给人的印象是,既然我们已经有了模块稳定性,那么框架就不需要继续与每个新的Xcode版本一起重新编译,但是事实并非如此。

如果有人能解释这里发生的事情,我将不胜感激。Xcode 11.2是否存在错误?还是我最初用Xcode 11.0编译时需要某种方式告诉它我想要模块稳定性吗?


阅读 783

收藏
2020-07-07

共1个答案

一尘不染

是的,结果证明如果您观看WWDC视频,他们会对其进行解释:https
//developer.apple.com/videos/play/wwdc2019/416/

您需要在框架的构建设置中将“ 分发构建库” 选项设置为“ 是”
,否则swift编译器不会生成必需的.swiftinterface文件,这是将来编译器能够加载旧库的关键。

最终在您的project.pbxproj文件中显示为:

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;

设置此标志后,我使用Xcode 11.0(swift 5.1)编译的框架可以被Xcode 11.2(swift 5.1.2)使用,并且一切似乎都正常工作。

希望这个问题/答案将为所有未观看所有WWDC视频的人提供有用的参考

如果错误仍然存​​在,请转至 产品 > 清理构建文件夹, 然后再次 构建

2020-07-07