备注:增量编译已禁用:不兼容全模块优化

Posted

技术标签:

【中文标题】备注:增量编译已禁用:不兼容全模块优化【英文标题】:remark: Incremental compilation has been disabled: it is not compatible with whole module optimization 【发布时间】:2021-10-18 10:56:38 【问题描述】:

更新到 Xcode 13 测试版,现在由于几个 pod 出现错误,我无法构建项目

Older Xcode launches an app on ios 15 too long

我用的是M1,可能是架构原因

【问题讨论】:

【参考方案1】:

这句话不是一个实际的错误,只是一个警告。真正的错误可以在同名的***部分下的嵌套Compile Swift source files 中找到。展开此命令的日志,您应该会看到实际错误。

【讨论】:

【参考方案2】:

我在将 Xcode 更新到版本 13 后遇到了问题。由于编译器抱怨整个模块编译,我们需要使用增量模式。

要做到这一点:

选择您的目标并转到构建设置 -> 编译模式 -> 切换到“增量”

【讨论】:

当我遇到构建错误时,我尝试了这个并得到了同样的错误 确保在清理构建文件夹之前 在构建设置下找不到 swift 编译器或编译模式的任何部分【参考方案3】:

我运行了pod update,它为我解决了这个问题

【讨论】:

也为我工作,谢谢。【参考方案4】:

将 SwiftMessages pod 版本从 8.0.2 更新到 9.0.4(不适用于 Swift 5.5)对我有帮助

【讨论】:

【参考方案5】:

确保您的 pod 与您的项目的 swift 版本相同。

【讨论】:

【参考方案6】:

我发现这是由于框架和项目优化构建设置不匹配造成的。

要修复它,应该优化项目的目标,例如-Os in BuildSettings -> Apple Clang Code Generation -> Optimisation Level 在你的项目目标上

如果将编译模式设置为整个模块,似乎 swift 会进行优化。 Eray 的答案有效,但可能无法为框架的发布版本创建最佳的程序集/位码。

项目级编译模式也需要Whole module。

还注意到,如果依赖顺序不正确,可能会发生这种情况。在并行构建期间,如果尚未构建依赖项的所需依赖项,则可能会出现此错误。通过显式添加到第一级家属Build Phases->Link with Libraries 列表来修复。

【讨论】:

对我来说,它就像在“构建阶段 → 依赖项”部分中不包括依赖项一样简单。我正在归档依赖于目标 B 和包 A 的目标 C,而目标 B 依赖于包 A,但包 A 未列为目标 B 的依赖项之一。我认为构建目标 C 逐渐成功,因为目标 C 依赖于包 A,并且包 A 是在目标 B 之前首先构建的。【参考方案7】:

我做了 Product -> Clean,然后 Xcode -> Preferences -> Locations -> Derived Data,转到目录并删除所有内容。然后关闭 Xcode 并重新打开并进行我的构建(存档)。一切都好。

【讨论】:

【参考方案8】:

在我的项目中,pods 部署目标仍然是iOS 8.0。我在Podfile 中添加了以下内容以升级它们的 iOS 13。然后我清理项目并删除了派生数据。添加以下脚本后,您需要调用pod install

post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
      end
    end
  end

【讨论】:

以上是关于备注:增量编译已禁用:不兼容全模块优化的主要内容,如果未能解决你的问题,请参考以下文章

或针对协议缓冲区版本 3.5.1 编译的工具,与已安装版本不兼容

Python 版本不匹配:模块是为 Python 3.6 编译的,但解释器版本不兼容:3.9.8

为新指令集扩展优化编译的代码的向后兼容性

解决编译nginx模块与rpm包安装的nginx不兼容问题

该程序是针对 Protocol Buffer 运行时库的 2.6.1 版本编译的,该版本与已安装的版本 (3.5.0) 不兼容

“模块是用不兼容的 Kotlin 版本编译的。其元数据的二进制版本是 1.5.1,预期版本是 1.1.16”