Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 目标。。。覆盖“Pods/Pods.xcconfig”中定义的“otherldflags”生成设置_Xcode_Cocoapods - Fatal编程技术网

Xcode 目标。。。覆盖“Pods/Pods.xcconfig”中定义的“otherldflags”生成设置

Xcode 目标。。。覆盖“Pods/Pods.xcconfig”中定义的“otherldflags”生成设置,xcode,cocoapods,Xcode,Cocoapods,我已经将spatialite合并到一个Xcode项目中,该项目使用Proj.4中的头文件,只有一个头文件。两者都是Xcode项目,都有静态目标 我正在尝试从git子模块迁移到Cocoapods。由于静态目标似乎很难与cocoapod一起使用,所以我只想以通常的方式构建项目。我为项目4制作了podspec。在为SpatialLite编写podfile后,我收到了警告: [!] The target `SpatialiteIOS [Debug]` overrides the `OTHER_LDFLA

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

我正在尝试从git子模块迁移到Cocoapods。由于静态目标似乎很难与cocoapod一起使用,所以我只想以通常的方式构建项目。我为
项目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.
我读过,但我对警告的含义以及我能做些什么来修复它却一无所知


另外,当我打开工作区以及单独打开SpatiaLite项目时,这两个项目都是针对MacOSx64的,而它应该是一个iOS项目。我的pod文件确实显示“platform:ios”。

您的构建设置与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设置感到满意,那么请转到项目的构建设置,找到合适的设置并点击删除键。这将使用Cocoapods中的设置


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

下面的第一行链接保存了我的日期:

要向项目的生成设置中的选项添加值,请在值列表前面加上$(继承)

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

platform :iOS, '5.0'

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

转到产品>编辑方案 点击Build 添加Pods静态库
清理并重新构建

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

转到目标生成设置->其他链接器标志->双击。将
$(继承)
添加到新行


如果“…目标覆盖在…”中定义的GCC_预处理器_定义生成设置”有问题,则必须将$(继承)添加到项目中的目标生成设置->预处理器宏,查找
目标->生成设置->其他链接器标志
,选择
其他链接器标志
,按
删除
(Mac键盘)/
退格
(普通键盘)以恢复设置。它对我有效

例如:

以前

之后

当我运行
pod安装
时,我看到了以下警告/错误(与
CLANG\u CXX\u库
相关):

Cocoapods发出的错误/警告 修复
  • 选择您的
    项目
    ,以便查看
    生成设置
  • 选择您的
    Target
    Targets
    下的
    AppName
  • 查找
    C++标准库
    (它可能是粗体的——这意味着它被覆盖了)
  • 选择线(使其高亮显示为蓝色),然后按⌘ + 删除(命令+退格)
  • 该行不应再以粗体显示,如果运行
    pod install
    ,则警告/错误应消失


    视觉辅助

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

    pod install
    
    [!]MY_应用程序[调试/发布]目标覆盖 标题搜索路径…
    [!]MY_应用程序[调试/发布]目标 覆盖其他\u ldflag…
    [!]MY_应用程序[调试/发布]目标 覆盖GCC_预处理器_定义

    通过将$(继承的)添加到

  • 标题搜索路径
  • 其他链接器标志
  • 预处理器宏
  • 在项目->目标->生成设置中

    现在,该命令将在不给出任何错误的情况下运行

    pod install
    

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

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

    我将它添加到MyAppTests的其他链接器标志中。之后,当我运行
    pod install
    时,警告消息消失了。

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

    platform :iOS, '9.0'
    

    这节省了我的时间

    每当我向pod文件添加pod时,这种情况就会发生

    我一直在努力寻找问题,但我只是一次又一次地绕圈子

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

    注释掉pod文件中的所有pod,并在终端中运行pod install

    然后

    取消对pod文件中所有pod的注释,然后再次运行pod安装

    这对我来说每次都有效!

    当我将$(继承的)标志添加到所讨论的文件(在本例中是库搜索路径)时,它导致另一个错误
    架构arm64的未定义符号:“\u swift\u getTypeByMangledNameInTextInMetadataState

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

    >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)\"",
    > );
    
    >库搜索路径=(
    “\”$(工具链目录)/usr/lib/swift/$(平台名称)\”,
    
    -“\”$(TOOLCHAIN\u DIR)/usr/lib/swift-5.0/$(PLATFORM\u NAME)\”,我也遇到了这个问题,我能够删除-ObjC并修复了这个问题。但是,当我尝试构建项目时,我得到一个错误,提示找不到目标特定的pod库:“ld:library not found for-lPods MyProject”“。你看到类似的东西了吗?我又碰到了。我不确定$(继承的)意思是。我应该在哪里添加它?@RodericCampbell我发现从项目中删除-ObjC对我来说很好,我看不到你的错误。嗯,但是我在运行时需要-ObjC标志,因为我得到了类别。OTHER_LDFLAGS=其他链接标志,HEADER_SEARCH_path=HEADER SEARCH path,GC
    >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)\"",
    > );