ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我正在尝试从 git 子模块迁移到 Cocoapods。由于静态目标似乎很难与 Cocoapods 一起使用,我只想以通常的方式构建项目。我为 Proj.4 制作了 podspec。在为 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.

我阅读了 this issue,但我对警告的含义以及我能做些什么来解决它一无所知。

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

2020 - 适合任何为这个烦人的问题而苦苦挣扎的人。它真的只是由(惊喜!:))facebook引起的。正如这里所解释的,firebase.google.com/docs/auth/ios/firebaseui “如果您愿意,您可以只添加 Auth 组件和您想要使用的提供程序...” 一旦您取消了 facebook 选项,就没有问题了。 :/

I
Idan

这在大多数情况下肯定有效:

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

如果您对“...target overrides the GCC_PREPROCESSOR_DEFINITIONS build setting defined in...”有疑问,那么您必须将 $(inherited) 添加到您的目标 Build Settings -> Preprocessor Macros


我会扩展这个答案。如果您对“...目标覆盖 ... 中定义的 GCC_PREPROCESSOR_DEFINITIONS 构建设置”有问题,那么您必须将 $(inherited) 添加到您的目标构建设置 ->预处理器宏
我怀疑“...目标覆盖了 INSERT_YOUR_MISSING_DEFINITION...”,那么您必须将 $(inherited) 添加到它。奇怪的是,我的 xcode 默认显示 $(inherited) 有点微弱。我编辑并简单地重新输入了相同的内容。错误消失了。。
@joe 仍然不适合我。我尝试了所有这些建议,但是当我重新运行 pod install 时,错误仍然存在。我对其他链接器标志和预处理器宏都进行了更改。在这两种情况下,除非您双击其他链接器标志和预处理器宏中的每一行,否则不会显示任何内容。然后可以看到$(inherited) 已经被添加了。我尝试删除和阅读。我尝试关闭并重新打开 xcode。当我输入 pod install 时,没有任何东西可以修复错误消息。
@msmq 现在已经很长时间了,但是您还记得您尝试过的解决方法并使其正常工作吗? $(inherited) 已经在顶行,但它对我不起作用:/
我已经添加了它,但 pod install 会引发相同的错误。
j
jscs

您的构建设置与 Cocoapods 想要的默认构建设置之间存在冲突。要查看 Cocoapods 构建设置,请查看项目中 Pods/Target Support Files/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 的设置。

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


我也遇到了这个问题,我能够删除 -ObjC 并解决了这个问题。但是,当我尝试构建项目时,我收到一条错误消息,提示找不到目标特定的 pod 库:“ld: library not found for -lPods-MyProject”。你有没有看到类似的东西?
我又遇到了这个。我不确定 $(inherited) 的意思。我在哪里添加它?
@RodericCampbell 我发现从项目中删除 -ObjC 对我来说效果很好,我没有看到你的错误。
嗯,但我需要在运行时为它添加 -ObjC 标志,因为我有类别。
OTHER_LDFLAGS = 其他链接标志,HEADER_SEARCH_PATHS = 标题搜索路径,GCC_PREPROCESSOR_DEFINITIONS = 预处理器宏。 @kraftydevil,您要删除什么设置?
z
zeeawan

我在终端中看到了 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 个错误将消失

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

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

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

pod install

当简单地更改 Other Linker Flags 的标志还不够时,上述方法对我有用。
A
Anil

我在运行 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.

修复

选择您的项目,以便您可以看到构建设置。选择您的目标(目标下的 AppName) 查找 C++ 标准库(它可能是粗体 - 这意味着它已被覆盖)。选择线(所以它突出显示为蓝色),然后按 ⌘ + DELETE(Command + Backspace)

该行不应再加粗,如果您运行 pod install,警告/错误应该会消失。

视觉辅助

https://i.stack.imgur.com/PEvCc.jpg


S
SamirChen

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

例子:

https://i.stack.imgur.com/M3V6J.png

https://i.stack.imgur.com/CG7fH.png


我们是否删除已经位于 Other Linker Flags 中的设置?还是我们保留它们并添加 $(inherited) ?
A
Andreas Olsson

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

https://i.stack.imgur.com/oVPG1.png


A
Amit Saxena

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

转到 Product > Edit Scheme 单击 Build 添加 Pods 静态库 Clean 并再次构建


我尝试了您建议的方式,但它没有按 pod 文件显示最近安装的框架,还有任何修复链接器标志错误的建议。 @Amit Saxena
当我的 Ionic 5/Cordova 9 应用程序中的 cordova-plugin-facebook4 插件的 Pod 出现相同类型的错误时,这对我有用。我添加了所有三个 Facebook 框架,清理了一个 presto!现在可以在 Xcode 模拟器上工作,但还不能在实际设备上工作(我使用的是带有 iOS 12.4.8 和 Xcode 11.6 的 iPhone 6)。
n
newenglander

下面的第一行链接拯救了我的一天:

要将值添加到项目构建设置中的选项,请在值列表前面加上 $(inherited)。

https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq

另外,不要忘记在 pod 文件的开头插入这一行:

platform :iOS, '5.0'

在我的情况下,这可以节省我的时间:不要忘记在 pod 文件的开头插入这一行:平台:iOS,'5.0'
s
sanjana

我添加了 $(inherited) 但我的项目仍未编译。对我来说,问题是标志“仅为活动架构构建”,我必须将其设置为“是”。


如果项目正在编译,我们可以忽略警告吗?
A
Amer Alzibak

不要忘记在 pod 文件的开头插入(或取消 Commanet)这一行:

platform :iOS, '9.0'

这节省了我的一天


错误的。它必须是 platform: ios, '9.0' 并且不能解决问题。
d
daj mi spokój

每次我将 pod 添加到 podfile 时,都会发生这种情况。

我不断尝试寻找问题,但我只是一次又一次地转圈!

错误信息范围很广,但是每次修复的方法都是一样的!

注释掉 (#) podfile 中的所有 pod 并在终端中运行 pod install。

然后...

取消注释掉 podfile 中的所有 pod,然后再次运行 pod install。

这对我每次都有效!


这没有帮助。
N
NathanNovak

当我将 $(inherited) 标志添加到相关文件(在本例中为 LIBRARY_SEARCH_PATHS)时,它导致了另一个错误 Undefined symbols for architecture arm64: "_swift_getTypeByMangledNameInContextInMetadataState

更改以下内容有效,我能够构建:

>LIBRARY_SEARCH_PATHS = (
   "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
-  "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", <--- Change this...
+  "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.2/$(PLATFORM_NAME)\"", <--- to this
   "\"$(inherited)\"",
> );