250

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

我正在尝试从 git 子模块迁移到 Cocoapods。由于静态目标似乎很难与 Cocoapods 一起使用,我只想以通常的方式构建项目。我为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 项目时,两者都针对 Mac OSX 64,而假设它是一个 iOS 项目。我的 podfile 确实说“平台:ios”。

4

12 回答 12

571

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

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

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

于 2014-09-27T17:06:37.620 回答
77

您的构建设置与 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) 添加到该设置。

于 2013-09-10T23:43:46.803 回答
32

我在终端中看到了 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
于 2015-08-30T18:30:59.330 回答
23

我跑的时候遇到了类似的问题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警告/错误应该消失。


视觉辅助

Cocoapods 的 CLANG_CXX_LIBRARY 错误/警告

于 2015-06-11T11:57:22.210 回答
21

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

例子:

在此处输入图像描述

在此处输入图像描述

于 2015-05-07T11:15:56.060 回答
13

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

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

于 2014-04-07T08:21:34.517 回答
13

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

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

于 2017-04-15T10:03:00.733 回答
6

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

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

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

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

platform :iOS, '5.0'
于 2013-11-08T12:56:43.860 回答
6

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

于 2016-03-08T05:26:44.660 回答
0

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

platform :iOS, '9.0'

这节省了我的一天

于 2020-07-14T15:13:39.937 回答
0

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

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

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

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

然后...

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

这对我每次都有效!

于 2020-10-20T06:55:20.083 回答
0

当我将 $(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)\"",
> );
于 2021-02-08T18:59:01.717 回答