Peter Brockmann
Peter Brockmann

Reputation: 3704

target overrides the FRAMEWORK_SEARCH_PATHS build settings

I'd like to update the CocoaPods built into my app, so I ran pod install from the terminal.

That's when I got this error:

[!] The `APP_NAME [Debug]` target overrides the `FRAMEWORK_SEARCH_PATHS` 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.

How do you Use the $(inherited) flag?

Upvotes: 63

Views: 51596

Answers (5)

Ann
Ann

Reputation: 882

It helps for me as well! But when I run pod install library search paths overwrites. So I made a hook for podfile, maybe it will help someone

project_path = './yourProject.xcodeproj' 
project = Xcodeproj::Project.open(project_path)

project.targets.each do |target|
  if target.name == 'yourProjectTarget' 
    target.build_configurations.each do |config|
      config.build_settings['LIBRARY_SEARCH_PATHS'] = ['$(inherited)']
    end
  end
end

project.save

This hook overwrites LIBRARY_SEARCH_PATHS to $(inherited) for you each time you run pod install. Place it inside post_install Podfile block

Upvotes: 0

Peter Brockmann
Peter Brockmann

Reputation: 3704

Selected the Project, targets-> app, then Build Settings where I added the $(inherited) line, deleting whatever specific pod had been referenced there before:

enter image description here

Upvotes: 126

maxfloden
maxfloden

Reputation: 325

I had this same problem (error build: Framework not found Pods_xxx) when updating cordova-onesignal from v2 to 3.3.0 on an old Ionic 3 project.

This solved it for me:

In Xcode, navigate Project + Target + General + Scroll down to Frameworks, Libraries, and Embedded Content

In the list I simply deleted (minus sign at bottom of list) the related file Pods_xxx.framework (it was a little grayed out)

After rebuild everything worked (incl OneSignal)

If I do pod install it comes back and I have to do it all over again.

Upvotes: 0

yoc
yoc

Reputation: 220

I had a $(inherited) but recursive, just change it to non-recursive

project target -> build settings -> framework_search_path

enter image description here

Upvotes: 0

dsapalo
dsapalo

Reputation: 1847

I was encountering this issue as well.

Aside from doing what Peter mentioned above, remember to double check if the correct Xcode project is selected in your podfile. This is because it is possible that you are changing the Build Settings of the incorrect Xcode project. It was a silly mistake, but it took quite some time before I realized it.

Normally, pod install works automatically if there is only one .xcodeproj file in the directory. However, if you are migrating your project to begin using cocoapods from the old way of manually adding frameworks/3rd party projects to your Xcode project, it is possible that you will have multiple .xcodeproj files in your folder. Doing the abovementioned fix didn't solve it for me, because I was editing the incorrect .xcodeproj file.

Go to your project directory, check the file named Podfile and make sure you specify the xcodeproj:

# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'
# Uncomment this line if you're using Swift

use_frameworks!
xcodeproj 'APP_NAME.xcodeproj'
target 'APP_NAME' do

# Your dependencies here
# pod 'NAME_OF_DEPENDENCY'
pod 'Google/CloudMessaging'
pod 'RxSwift',    '~> 2.0'
pod 'RxCocoa',    '~> 2.0'
pod 'RxBlocking', '~> 2.0'
pod 'Fabric'
pod 'Crashlytics'
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'

After selecting the correct .xcodeproj on your Podfile, go to Xcode and do the following:

  1. From the Project Navigator on the left side, select your project.
  2. On the center screen, go to Build Settings
  3. Add a filter for 'Framework Search Paths'
  4. Enter $(inherited) as the value; it should auto-fill with data evaluating that expression

Below is an image of Xcode with Version 7.2 (7C68).

Xcode preview

Upvotes: 15

Related Questions