我已将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确实说“platform:ios”。
答案 0 :(得分:487)
这绝对适用于大部分时间:
转到目标构建设置 - >其他链接器标志 - >双击。将$(inherited)
添加到新行。
如果您对" ...有问题,则会覆盖在..."中定义的GCC_PREPROCESSOR_DEFINITIONS构建设置。那么你必须将$(继承)添加到目标Build Settings - >预处理器宏
答案 1 :(得分:74)
您的构建设置与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设置感到满意,请转到项目的Build Settings,找到合适的设置并点击Delete键。这将使用Cocoapods的设置。
另一方面,如果您需要使用自定义设置,请将$(继承)添加到该设置。
答案 2 :(得分:25)
我在终端
中看到了pod命令的这3个错误pod install
[!] MY_APP [Debug / Release]目标覆盖了 HEADER_SEARCH_PATHS ...
[!] MY_APP [Debug / Release]目标 覆盖OTHER_LDFLAGS ...
[!] MY_APP [Debug / Release]目标 覆盖GCC_PREPROCESSOR_DEFINITIONS ......
通过将 $(继承)添加到
,所有这3个错误都将消失- >目标 - >构建设置
现在命令会运行而不会出现任何错误
pod install
答案 3 :(得分:20)
在您的项目中,找到SELECT S.SET_ID
FROM SET_EQUIPMENT S
GROUP BY S.SET_ID
HAVING SUM(CASE WHEN S.EQ_ID = 1 THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN S.EQ_ID = 2 THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN S.EQ_ID = 3 THEN 1 ELSE 0 END) > 0;
,选择Target -> Build Settings -> Other Linker Flags
,按Other Linker Flags
(Mac键盘)/ delete
(普通键盘)恢复设置。它对我有用。
示例:
在
在
答案 4 :(得分:19)
在我运行pod install
时遇到类似问题,我看到以下警告/错误(与CLANG_CXX_LIBRARY
相关):
[!] 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.
Project
,以便查看Build Settings
。Target
(AppName
下的Targets
)C++ Standard Library
(可能会在 BOLD - 这意味着它被覆盖了。)该行不应再加粗,如果您运行pod install
,警告/错误应该已经消失。
答案 5 :(得分:12)
如果Xcode在链接时抱怨,例如找不到-lPods的库,它不会检测隐式依赖项:
转到产品>编辑方案 单击Build 添加Pods静态库 清理并再次构建
答案 6 :(得分:7)
答案 7 :(得分:6)
以下第一行链接节省了我的一天:
要从项目的构建设置中为选项添加值,请在值列表前加上$(继承)。
https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq
另外,不要忘记在pod文件的开头插入此行:
platform :iOS, '5.0'
答案 8 :(得分:5)
我添加了$(继承)但我的项目仍未编译。对我来说问题是旗帜"仅针对活动架构构建",我必须将其设置为YES。
答案 9 :(得分:0)
不要忘记在pod文件的开头插入(或取消逗号分隔)这一行:
platform :iOS, '9.0'
这可以挽救我的生活
答案 10 :(得分:0)
每次我将pod添加到podfile中时,这种情况都会发生。
我不断地尝试发现问题,但是我一次又一次地转圈!
错误消息范围很大,但是每次修复方法都相同!
注释(#)podfile中的所有pod,并在终端中运行pod install。
然后...
取消注释Podfile中的所有Pod,然后再次运行pod install。
这每次都对我有用!
答案 11 :(得分: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)\"",
> );