How do I specify multiple targets in my podfile for my Xcode project? How do I specify multiple targets in my podfile for my Xcode project? xcode xcode

How do I specify multiple targets in my podfile for my Xcode project?


Since CocoaPods 1.0 has changed the syntax, instead of using link_with, do something like:

# Note; name needs to be all lower-case.def shared_pods    pod 'SSKeychain', '~> 0.1.4'    pod 'INAppStoreWindow', :head    pod 'AFNetworking', '1.1.0'    pod 'Reachability', '~> 3.1.0'    pod 'KSADNTwitterFormatter', '~> 0.1.0'    pod 'MASShortcut', '~> 1.1'    pod 'MagicalRecord', '2.1'    pod 'MASPreferences', '~> 1.0'endtarget 'Sail' do    shared_podsendtarget 'Sail-iOS' do    shared_podsend

Old answer Pre CocoaPods 1.0:

Yes there is a better way! Check out link_with where you can do link_with 'MyApp', 'MyOtherApp' to specify multiple targets.

I use this with unit tests like link_with 'App', 'App-Tests' (beware of spaces in target's names).

Example:

platform :osx, '10.8'link_with 'Sail', 'Sail-Tests'pod 'SSKeychain', '~> 0.1.4'pod 'INAppStoreWindow', :headpod 'AFNetworking', '1.1.0'pod 'Reachability', '~> 3.1.0'pod 'KSADNTwitterFormatter', '~> 0.1.0'pod 'MASShortcut', '~> 1.1'pod 'MagicalRecord', '2.1'pod 'MASPreferences', '~> 1.0'

Approach using abstract_target:

In below example, the 'ShowsiOS', 'ShowsTV' and 'ShowsTests' targets have their own separate pods, plus ShowsKit inherited, because they are all child of the dummy target 'Shows'.

# Note: There are no targets called "Shows" in any of this workspace's Xcode projects.abstract_target 'Shows' do  pod 'ShowsKit'  target 'ShowsiOS' do    pod 'ShowWebAuth'  end  target 'ShowsTV' do    pod 'ShowTVAuth'  end  # Our tests target has its own copy  # of our testing frameworks  # (beside inheriting ShowsKit pod).  target 'ShowsTests' do    inherit! :search_paths    pod 'Specta'    pod 'Expecta'  endend


I think better solution is

# Podfileplatform :ios, '8.0'use_frameworks!# Available podsdef available_pods    pod 'AFNetworking', '1.1.0'    pod 'Reachability', '~> 3.1.0'endtarget 'demo' do  available_podsendtarget 'demoTests' do    available_podsend

Reference from : http://natashatherobot.com/cocoapods-installing-same-pod-multiple-targets/


If you want multiple targets to share the same pods, use an abstract_target.

# There are no targets called "Shows" in any Xcode projectsabstract_target 'Shows' do  pod 'ShowsKit'  pod 'Fabric'  # Has its own copy of ShowsKit + ShowWebAuth  target 'ShowsiOS' do    pod 'ShowWebAuth'  end  # Has its own copy of ShowsKit + ShowTVAuth  target 'ShowsTV' do    pod 'ShowTVAuth'  endend

or just

pod 'ShowsKit'pod 'Fabric'# Has its own copy of ShowsKit + ShowWebAuthtarget 'ShowsiOS' do  pod 'ShowWebAuth'end# Has its own copy of ShowsKit + ShowTVAuthtarget 'ShowsTV' do  pod 'ShowTVAuth'end

source: https://guides.cocoapods.org/using/the-podfile.html