>
The Podfile is a specification that describes the dependencies of the
targets of one or more Xcode projects. The Podfile always creates an
implicit target, named default, which links to the first target of the
user project.
A podfile can be very simple:
pod 'AFNetworking', '~> 1.0'
An example of a more complex podfile can be:
platform :ios, '6.0'
inhibit_all_warnings!
xcodeproj `MyProject`
pod 'ObjectiveSugar', '~> 0.5'
target :test do
  pod 'OCMock', '~> 2.0.1'
end
post_install do |installer|
  installer.project.targets.each do |target|
    puts "#target.name"
  end
end
pod
podspec
target
platform
xcodeproj
link_with
inhibit_all_warnings!
workspace
generate_bridge_support!
set_arc_compatibility_flag!
pre_install
post_install
pod(name = nil, *requirements, &block) #=> void 
void 
149 def pod(name = nil, *requirements, &block)
150   if block
151     raise StandardError, "Inline specifications are deprecated. Please store the specification in a `podspec` file."
152   end
153 
154   unless name
155     raise StandardError, "A dependency requires a name."
156   end
157 
158   current_target_definition.store_pod(name, *requirements)
159 end
podspec(options = nil) #=> void 
Hash {Symbol=>String}  options
The path where to load the Specification. If not provided the
first podspec in the directory of the podfile is used.
void 
podspec
podspec :name => 'QuickDialog'
podspec :path => '/Documents/PrettyKit/PrettyKit.podspec'
193 def podspec(options = nil)
194   current_target_definition.store_podspec(options)
195 end
target(name, options = {}) #=> void 
Symbol String  name
The name of the target definition.
Hash  options
A customizable set of options
void 
Defining a target
target :ZipApp do
  pod 'SSZipArchive'
end
Defining an exclusive target
target :ZipApp do
  pod 'SSZipArchive'
  target :test, :exclusive => true do
    pod 'JSONKit'
  end
end
232 def target(name, options = {})
233   if options && !options.keys.all? { |key| [:exclusive].include?(key) }
234     raise Informative, "Unsupported options `#{options}` for target `#{name}`"
235   end
236 
237   parent = current_target_definition
238   definition = TargetDefinition.new(name, parent)
239   definition.exclusive = true if options[:exclusive]
240   self.current_target_definition = definition
241   yield
242 ensure
243   self.current_target_definition = parent
244 end
platform(name, target = nil) #=> void 
Symbol  name
The name of platform, can be either :osx for OS X or :ios
for iOS.
String Version  target
The optional deployment. If not provided a default value according to the platform name will be assigned.
void 
Specifying the platform
platform :ios, "4.0"
platform :ios
280 def platform(name, target = nil)
281   # Support for deprecated options parameter
282   target = target[:deployment_target] if target.is_a?(Hash)
283   current_target_definition.set_platform(name, target)
284 end
xcodeproj(path, build_configurations = {}) #=> void 
String  path
The path of the project to link with
Hash{String => symbol}  build_configurations
A hash where the keys are the name of the build configurations
in your Xcode project and the values are Symbols that specify
if the configuration should be based on the :debug or
:release configuration. If no explicit mapping is specified
for a configuration in your project, it will default to
:release.
void 
Specifying the user project
# Look for target to link with in an Xcode project called
# `MyProject.xcodeproj`.
xcodeproj `MyProject`
target :test do
  # This Pods library links with a target in another project.
  xcodeproj `TestProject`
end
Using custom build configurations
xcodeproj `TestProject`, 'Mac App Store' => :release, 'Test' => :debug
331 def xcodeproj(path, build_configurations = {})
332   current_target_definition.user_project_path = path
333   current_target_definition.build_configurations = build_configurations
334 end
link_with(targets) #=> void 
String Array<String>  targets
The target or the targets to link with.
void 
Link with an user project target
link_with 'MyApp'
Link with a more user project targets
link_with ['MyApp', 'MyOtherApp']
358 def link_with(targets)
359   current_target_definition.link_with = targets
360 end
inhibit_all_warnings! #=> undefined
373 def inhibit_all_warnings!
374   current_target_definition.inhibit_all_warnings = true
375 end
workspace(path) #=> void 
String  path
Path of the workspace.
void 
Specifying a workspace
workspace 'MyWorkspace'
403 def workspace(path)
404   set_hash_value('workspace', path.to_s)
405 end
generate_bridge_support! #=> void 
void 
419 def generate_bridge_support!
420   set_hash_value('generate_bridge_support', true)
421 end
set_arc_compatibility_flag! #=> void 
void 
437 def set_arc_compatibility_flag!
438   set_hash_value('set_arc_compatibility_flag', true)
439 end
pre_install(&block) #=> undefined
Defining a pre install hook in a Podfile.
pre_install do |installer_representation|
  # Do something fancy!
end
465 def pre_install(&block)
466   @pre_install_callback = block
467 end
post_install(&block) #=> void 
void 
Customizing the `OTHER_LDFLAGS` of all targets
post_install do |installer_representation|
  installer_representation.project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['GCC_ENABLE_OBJC_GC'] = 'supported'
    end
  end
end
489 def post_install(&block)
490   @post_install_callback = block
491 end