【发布时间】:2015-08-28 11:56:05
【问题描述】:
我将 Xcode 6 项目升级到 Xcode 7 并开始看到警告是针对更新的 iOS 版本 (5.1.1) 而不是链接 (5.1)。
如何解决此警告?
【问题讨论】:
-
链接到 iOS 的补丁版本时,这是 Xcode 7.0 和 7.1 的问题。将
-miphoneos-version-min=5.1.1与链接器一起使用时,它只会尊重版本的主要+次要部分(5.1)。
我将 Xcode 6 项目升级到 Xcode 7 并开始看到警告是针对更新的 iOS 版本 (5.1.1) 而不是链接 (5.1)。
如何解决此警告?
【问题讨论】:
-miphoneos-version-min=5.1.1 与链接器一起使用时,它只会尊重版本的主要+次要部分(5.1)。
在我的情况下,产生此警告是因为我的一个 XCode 子项目的 iOS-Deployment-Target (7.1) 高于我的基础项目 (7.0)。 如果您使用 cococapods,当您在 Podfile 中指定错误的 iOS 平台版本时,可能会发生这种错误配置。在我的示例中,我在我的 Podfile 中指定了
platform :ios, '7.1'
而我将 XCode-Project 中的 Deployment-Target 设置为 iOS 7.0。将子项目的 DeploymentTarget 设置为与 BaseProject 相同的 iOS 版本可修复此警告。
【讨论】:
更新:似乎已通过 Xcode 7.3 (7D175) 解决。我删除了 -w 标志,警告不再出现。
这似乎是 Xcode 7.0 和 7.1B1 中的一个已知错误(错误 #21813082)。
作为一种临时解决方法,为了抑制大量警告,可以将 -w 标志添加到 Build Settings -> Other Linker Flags:
我只是将此添加到调试构建设置中,并将以下内容插入到 AppDelegate 中,就像提醒一样:
#ifdef DEBUG
#warning Linker warnings suppressed (-w in build settings)
#endif
这至少有助于快速发现真正的警告,而不是让构建结果淹没在每个源的相同警告中(在我的例子中,出现了 150 多个警告)。
【讨论】:
就我而言,我将项目设置为 8.4,但所有其余的子项目/目标仍为 9.0。看来是部署目标不一致造成的。
对于那些正在使用 Cocoapods 的人:
确保它们都相似。
【讨论】:
尝试在“链接->其他链接器标志”上添加“-w”。
当 mySDK 构建的基础 SDK 大于开发目标 myProject 时,就会发生这种情况。
【讨论】:
在我的情况下,项目部分 (7.0) 中的部署目标与目标部署目标 (8.0) 不同。因此,请检查项目的部署目标和项目中的每个目标是否相同。
【讨论】:
首先更改项目下的 iOS 部署目标,然后更改目标下的部署目标。删除/Users/yourUser/Library/Developer/Xcode/DerivedData (rm -rf yourProject 处的文件)。再次安装 Pod,然后告别警告。
【讨论】:
在我的例子中,我使用最新的 iOS 构建了库,但应用程序的部署目标低于此。所以我认为除了将 -w 添加到其他链接器标志之外我无能为力
【讨论】:
以防万一有人和我一样感到困惑:我发现我在外部硬盘驱动器上有一个 Xcode 测试版,并且系统正在选择该驱动器上的工具而不是内部驱动器。 (大概是因为它们是较新的测试版工具?)...弹出驱动器解决了我的问题!
【讨论】:
在我的情况下,我更改了目标中的部署目标,而没有更改项目中的相同。
为了解决这个问题,我更改了项目和目标上的部署目标,然后我进行了 pod 更新。
【讨论】: