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)\"",
> );