Cocoa pod installation error: " The target overrides the SWIFT_VERSION build setting "

Cocoa pod installation error: " The target overrides the SWIFT_VERSION build setting "

我正在尝试将 Cocoalumberjack 安装为 pod,但出现此错误:

The ProjectName [Release] target overrides the SWIFT_VERSION build setting defined in `Pods/Target Support Files/Pods-ProjectName/Pods-ProjectName.release.xcconfig'. This can lead to problems with the CocoaPods installation

pod xcconfig 文件包含以下内容:

SWIFT_VERSION = 3.0

但我的项目已经在使用 swift 3。所以我不明白为什么会出现这种不匹配。

xcrun swift -version

Apple Swift version 3.0 (swiftlang-800.0.46.2 clang-800.0.38)

但是我在 Xcode 的构建设置中的任何地方都看不到 SWIFT_VERSION,如果我在 Xcode 中输入 swift 作为搜索词也看不到我可以在任何地方看到任何看起来像 swift 版本号

的构建设置

另外pod安装继续说:"Use the $(inherited) flag"解决问题。 但是我的 Xcode 构建设置其他链接器标志已经有这个 $(inherited) 标志,那为什么不能解决问题?

(Xcode 8)

您需要从您的目标中删除任何覆盖的 "Use Legacy Swift Language Version" 构建设置。

这不是很有用,因为无法删除它。

您要么继承该值,要么分配一个值,并且由于 UI 构建于 [=17] 的方式,无法在分配后返回 $(inherited) 值=](在某些选项上你有一个 "custom" 值,你可以在其中添加它,但不是在所有类型的值上)。

所以这是一条没有真正解决办法的死胡同。

有点不直观,但你要做的是:

1) 在您的项目设置中搜索 "SWIFT_VERSION"

2) 你会看到一个条目说 "Use Legacy Swift Language Version"

  • 如果您已经选择了任何值,它将以粗体显示

3) Select 条目(不是值)并按 "DELETE",粗体应该消失。

4) 重复相同的步骤,但现在针对您的目标(带有应用程序图标的那个)

5) 关闭 XCode

6) 运行 "pod install" 再一次

7) 打开您的项目,然后清理它 (Shift + Command + K)

现在它应该可以正常工作了。

注意:

特别是 "Cocoalumberjack" 请确保您的 pod 安装的是 3.0+ 版本,如果不是 运行 则 "sudo pod update" 因为在此之前的版本将无法与 [=59 一起使用=] 3.

编辑:

我很确定目前 cocoapods 对此的处理有点错误,因为我经历过有时它有效而其他人则无效。但是,请记住,您可以直接在每个框架的基础上设置 "SWIFT_VERSION" 标志:

1) Select Pods 项目(在您的项目中)。

2) Select 您要设置的目标并查找专门针对该目标的 "SWIFT_VERSION" 标志。

3) 清理并重建。