I have incorporate SpatialIite
into a Xcode project which uses a header file from Proj.4
, just one header. Both are Xcode projects and have static targets.
I'm trying to migrate from git submodule to Cocoapods. Since static targets seems to be difficult to use with Cocoapods, I just want to have the project built in the usual way. I made podspec for Proj.4
. After writing podfile for SpatialLite
I got the warnings:
[!] 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.
I read this issue but I'm pretty clueless to what the warnings mean and what can I do to fix it.
Additionally problem, when I open the workspace as well as opening SpatiaLite project alone, both are targeted to Mac OSX 64, when it is suppose to be an iOS project. My podfile does say "platform :ios".
This definitely works most of the time:
Go to your target Build Settings -> Other linker flags -> double click . Add $(inherited)
to a new line.
If you have problem with "...target overrides the GCC_PREPROCESSOR_DEFINITIONS build setting defined in..." then you must add $(inherited) to your target Build Settings -> Preprocessor Macros
There is a conflict between your build settings and the default build settings that Cocoapods wants. To see the Cocoapods build settings, view the .xcconfig file(s) in Pods/Target Support Files/Pods-${PROJECTNAME}/ in your project. For me this file contains:
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
If you are happy with the Cocoapods settings, then go to Build Settings for your project, find the appropriate setting and hit the Delete key. This will use the setting from Cocoapods.
On the other hand, if you have a custom setting that you need to use, then add $(inherited) to that setting.
I've seen these 3 errors for pod command in terminal
pod install
[!] The MY_APP [Debug/Release] target overrides the HEADER_SEARCH_PATHS ... [!] The MY_APP [Debug/Release] target overrides the OTHER_LDFLAGS ... [!] The MY_APP [Debug/Release] target overrides the GCC_PREPROCESSOR_DEFINITIONS ...
All these 3 errors would be gone by adding $(inherited) to
Header Search Paths Other Linker Flags Preprocessor Macros
in Project -> Target -> Build Settings
And now the command would run without giving any errors
pod install
Other Linker Flags
wasn't sufficient.
Just had a similar issue when I ran pod install
, I saw the following warnings/errors (related to CLANG_CXX_LIBRARY
):
The Error/Warning from 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.
The Fix
Select your Project so you can see the Build Settings. Select your Target (AppName under Targets) Find C++ Standard Library (It will probably be in BOLD - This means it's overridden). Select the Line (So it's highlighted Blue), and press ⌘ + DELETE (Command + Backspace)
The line should not be bolded anymore and if you run pod install
the warnings/errors should have disappeared.
Visual Aid
https://i.stack.imgur.com/PEvCc.jpg
In your project, find Target -> Build Settings -> Other Linker Flags
, select Other Linker Flags
, press delete
(Mac Keyboard)/Backspace
(Normal keyboard) to recover the setting. It works for me.
Example:
https://i.stack.imgur.com/M3V6J.png
https://i.stack.imgur.com/CG7fH.png
For me the problem was with my targets tests. I already had the $(inherited)
flag in my main app target.
https://i.stack.imgur.com/oVPG1.png
If Xcode complains while linking, e.g. Library not found for -lPods, it doesn't detect the implicit dependencies:
Go to Product > Edit Scheme Click on Build Add the Pods static library Clean and build again
The first line of link below saved my day:
To add values to options from your project’s build settings, prepend the value list with $(inherited).
https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq
Also, do not forget to insert this line at the beginning of your pod file:
platform :iOS, '5.0'
I added $(inherited) but my project was still not compiling. For me problem was flag "Build for active Architecture only", I had to set it to YES.
do not forget to insert (or unCommanet) this line at the beginning of your pod file:
platform :iOS, '9.0'
that saves my day
platform: ios, '9.0'
and it doesn't solve the problem.
This happens to me every time I add a pod to the podfile.
I constantly try and find the problem but I just go round in circles again and again!
The error messages range, however the way to fix it is the same every time!
Comment out(#) ALL of the pods in the podfile and run pod install in terminal.
Then...
Uncomment out all of the pods in the podfile and run pod install again.
This has worked for me every single time!
When I added the $(inherited) flag to the file in question (in this case it was LIBRARY_SEARCH_PATHS) it led to another error Undefined symbols for architecture arm64: "_swift_getTypeByMangledNameInContextInMetadataState
Changing the following worked and I was able to build:
>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)\"",
> );
Success story sharing
GCC_PREPROCESSOR_DEFINITIONS
build setting defined in ..." then you must add $(inherited) to your target Build Settings -> Preprocessor Macros$(inherited)
is already there at the top line but it doesn't work for me :/