备注:增量编译已禁用:不兼容全模块优化
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
该程序是针对 Protocol Buffer 运行时库的 2.6.1 版本编译的,该版本与已安装的版本 (3.5.0) 不兼容