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) 清理并重建。
我正在尝试将 Cocoalumberjack 安装为 pod,但出现此错误:
The
ProjectName [Release]
target overrides theSWIFT_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) 清理并重建。