目标…覆盖`Pods / Pods.xcconfig中定义的`OTHER_LDFLAGS`构建设置。


237

我已经合并SpatialIite到一个Xcode项目中,该项目使用的头文件Proj.4仅来自一个头。两者都是Xcode项目,并且具有静态目标。

我正在尝试从git子模块迁移到Cocoapods。由于Cocoapods似乎很难使用静态目标,因此我只想以通常的方式构建项目。我为做了podspec Proj.4。在为SpatialLite我编写podfile之后,我得到了警告:

[!] The target `SpatialiteIOS [Debug]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

我阅读了此问题,但对于警告的含义以及如何解决此问题我一无所知。

另外的问题是,当我打开工作区以及单独打开SpatiaLite项目时,当假定它是一个iOS项目时,两者都针对Mac OSX 64。我的podfile确实说“ platform:ios”。


2020年-对于那些在这个烦人的问题上挣扎的人。这实际上仅是由(惊奇!:))facebook引起的。如此处所述,firebase.google.com / docs / auth / ios / firebaseui “如果您愿意,您可以仅添加Auth组件和要使用的提供程序...”,消除了facebook选项后,就没有问题了。:/
Fattie

Answers:


543

这肯定在大多数时间都有效:

转到目标构建设置->其他链接器标志->双击。添加$(inherited)到新行。

如果您对“ ...目标覆盖...中定义的GCC_PREPROCESSOR_DEFINITIONS构建设置有疑问”,则必须将$(继承)添加到目标构建设置->预处理程序宏


29
我会扩展这个答案。如果您对“ ...目标覆盖...中GCC_PREPROCESSOR_DEFINITIONS定义的构建设置有
疑问

1
我怀疑“ ...目标优先于INSERT_YOUR_MISSING_DEFINITION ...”,那么您必须向其添加$(继承)。奇怪的是,默认情况下,我的xcode显示$(继承)有点模糊。我编辑并重新输入了相同的内容。错误消失了..

3
@joe仍然不为我工作。我尝试了所有这些建议,但是当我重新运行pod install时,错误仍然存​​在。我对其他链接器标志和预处理器宏进行了更改。在这两种情况下,除非您双击其他链接器标志和预处理器宏中的每一行,否则都不会显示任何内容。然后,您可以看到已添加$(继承)。我尝试删除和阅读。我尝试关闭并重新打开xcode。当我键入Pod安装时,没有任何方法可以修复错误消息。
JeffB6688'9

1
@msmq已经有很长时间了,但是您还记得尝试过的解决方法吗?$(inherited)已经在最上面了,但是对我不起作用:/
Kostas Dimakis

1
我添加了它,stil pod安装会引发相同的错误。
rohitwtbs

75

您的构建设置与Cocoapods想要的默认构建设置之间存在冲突。要查看Cocoapods的构建设置,请在项目中的Pod /目标支持文件/ Pods-$ {PROJECTNAME} /中查看.xcconfig文件。对我来说,此文件包含:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/Commando"
OTHER_LDFLAGS = -ObjC -framework Foundation -framework QuartzCore -framework UIKit
PODS_ROOT = ${SRCROOT}/Pods

如果您对Cocoapods设置满意,请转到项目的“构建设置”,找到合适的设置,然后按Delete键。这将使用Cocoapods中的设置。

另一方面,如果您有需要使用的自定义设置,则将$(继承)添加到该设置。


我也遇到了这个问题,我能够删除-ObjC并解决了这个问题。但是,当我尝试构建项目时,收到一条错误消息,提示找不到目标特定的pod库:“ ld:-lPods-MyProject找不到库”。你看到类似的东西了吗?
Roderic Campbell

3
我又碰到这个了 我不确定$(继承)的意思。我在哪里添加它?
huggie 2013年

@RodericCampbell我发现从项目中删除-ObjC对我来说很好,我看不到您的错误。
huggie

1
嗯,但是我在运行时需要-ObjC标志,因为我得到了类别。
huggie

3
OTHER_LDFLAGS =其他链接标志,HEADER_SEARCH_PATHS =标题搜索路径,GCC_PREPROCESSOR_DEFINITIONS =预处理程序宏。@kraftydevil,您要删除什么设置?
phatmann 2014年

30

我在终端中看到了pod命令的这3个错误

pod install

[!] MY_APP [Debug / Release]目标将覆盖HEADER_SEARCH_PATHS ...
[!] MY_APP [Debug / Release]目标将覆盖OTHER_LDFLAGS ...
[!] MY_APP [Debug / Release]目标将覆盖GCC_PREPROCESSOR_DEFINITIONS .. 。

通过将$(inherited)添加到所有这3个错误中,

  1. 标头搜索路径
  2. 其他链接器标志
  3. 预处理器宏

项目->目标->构建设置中

现在该命令将运行而不会出现任何错误

pod install

上面的内容对我来说很有效,仅更改标志Other Linker Flags不足以解决问题。
JaredH 2015年

21

在您的项目中,找到Target -> Build Settings -> Other Linker Flags,选择Other Linker Flags,然后按delete(Mac键盘)/ Backspace(普通键盘)以恢复设置 这个对我有用。

例:

之前 在此处输入图片说明

在此处输入图片说明


1
我们如何删除其他链接器标记中已经存在的设置?还是保留它们并添加$(继承)?
isJulian00 '18

20

跑步时遇到了类似的问题pod install,我看到了以下警告/错误(与有关CLANG_CXX_LIBRARY):

Cocoapods的错误/警告

[!] The `Project [Debug]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The `Project [Release]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

修复

  1. 选择您的Project即可看到Build Settings
  2. 选择您的TargetAppNameTargets
  3. 查找C++ Standard Library(它可能会以粗体显示 -这意味着它已被覆盖)。
  4. 选择“行”(以蓝色突出显示),然后按⌘ + DELETE(Command + Backspace)

该行不应再加粗,并且如果您运行pod install警告/错误,该信息应该已经消失。


视觉辅助

CLANG_CXX_LIBRARY错误/警告与Cocoapods


12

如果Xcode在链接时抱怨,例如-lPods找不到Library,则它不会检测到隐式依赖项:

转到产品>编辑方案,单击“生成”。添加Pods静态库清理并再次生成


我尝试了您建议的方式,但未按Pod文件显示最近安装的框架,也没有其他解决链接器标志错误的建议。@Amit Saxena
Anilkumar iOS ReactNative

11

对我来说,问题在于我的目标测试。$(inherited)我的主要应用目标中已经有该标志。

我将其添加到MyAppTests其他链接器标志。之后,当我运行时pod install,警告消息消失了。 在此处输入图片说明



6

我添加了$(继承),但我的项目仍未编译。对我来说,问题是标记“仅针对活动体系结构构建”,我不得不将其设置为YES。


如果项目正在编译中,我们可以忽略警告吗?
isJulian00 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.