Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cocoa podspec and path for dependency

how can I specify in podspec a local path for an dependency ?

like : s.dependency 'MyLibrary', :path => '../MyLibrary'

thanks

like image 667
Danilo Avatar asked Sep 15 '15 09:09

Danilo


People also ask

How do you add dependency in CocoaPods?

After you have initially installed CocoaPods into your project, you can add new dependencies (or remove unused ones) by editing the Podfile. Then simply run pod install again.

Where can I find Podspec file?

Podspecs are ruby files. The Specs Repo is the repository on GitHub that contains the list of all available pods. Every library has an individual folder, which contains sub folders of the available versions of that pod. See the Private Pods section for an explanation of the Spec repo's file structure.

What is CocoaPods dependency?

CocoaPods refers to a dependency as a pod hence the name Podfile. Because CocoaPods took inspiration from Bundler, the syntax and format look similar to that of a Gemfile. You can manually create a Podfile with a text editor or execute the pod init command at the root of your Xcode project.

How do I add CocoaPods to my path?

To install the pods, do one of the following: Place the caret at the code line where you add the pod, press ⌥ ⏎ , select Install, and press ⏎ . Click Install pods in the top-left corner of the editor window. From the main menu, select Tools | CocoaPods | Install.


2 Answers

You should use the :path keyword in your Podfile :

pod 'AFNetworking', :path => '~/Documents/AFNetworking/AFNetworking.podspec' 

Tips: If you don't know the path, you can drag & drop the file in your Podfile and it will display it.

EDIT

I did not understand correctly what the OP was asking for, here is the correct answer:

  1. Put the local dependency inside your pod's folder root directory,
  2. In your Podspec file, just add s.ios.dependency 'YourPodName/YourPodDependencyFolder'

After that, create a subspace like so:

s.subspec 'YourPodName' do |ss| ss.source_files = 'YourPodName/**/*.{h,m}' end 
like image 175
Loegic Avatar answered Oct 04 '22 10:10

Loegic


I can't put the other libraries in the root of my library, these are inside the parent because are shared with other project, but unfortunately without use the pods, and I'm trying to use the pods for all, and I already configured the podspec for all libraries.

I'm trying to do something like this written below, but do not appear to work:

Pod::Spec.new do |s|     s.name                  = 'MyLibrary'     s.platform              = 'ios'     s.ios.deployment_target = '7.1'     s.source_files          = 'Classes/**/.{h,m}'     s.resource              = 'Classes/resources/*.*'     s.requires_arc          = true     s.dependency 'AFNetworking'     s.dependency 'SharedLib'      s.subspec 'SharedLib' do |ss|         ss.source_files         = '../SharedLib/Classes/**/*.{h,m}'         s.resource              = '../SharedLib/Classes/resources/*.*'         ss.ios.framework        = 'AVFoundation'     end end 

thanks for all.

like image 20
Danilo Avatar answered Oct 04 '22 10:10

Danilo