class Pod::Prebuild
Public Class Methods
build(sandbox_root_path, target, output_path, bitcode_enabled = false, custom_build_options = [], custom_build_options_simulator = [])
click to toggle source
Build the frameworks with sandbox and targets
@param [String] sandbox_root_path
The sandbox root path where the targets project place [PodTarget] target The pod targets to build [Pathname] output_path output path for generated frameworks
# File lib/cocoapods-hd/build/build_framework.rb, line 150 def self.build(sandbox_root_path, target, output_path, bitcode_enabled = false, custom_build_options = [], custom_build_options_simulator = []) return if target.nil? sandbox_root = Pathname(sandbox_root_path) sandbox = Pod::Sandbox.new(sandbox_root) build_dir = self.build_dir(sandbox_root) # -- build the framework case target.platform.name when :ios then build_for_iosish_platform(sandbox, build_dir, output_path, target, 'iphoneos', 'iphonesimulator', bitcode_enabled, custom_build_options, custom_build_options_simulator) when :osx then xcodebuild(sandbox, target.label, 'macosx', nil, custom_build_options) # when :tvos then build_for_iosish_platform(sandbox, build_dir, target, 'appletvos', 'appletvsimulator') when :watchos then build_for_iosish_platform(sandbox, build_dir, output_path, target, 'watchos', 'watchsimulator', true, custom_build_options, custom_build_options_simulator) else raise "Unsupported platform for '#{target.name}': '#{target.platform.name}'" end raise Pod::Informative, 'The build directory was not found in the expected location.' unless build_dir.directory? # # --- copy the vendored libraries and framework # frameworks = build_dir.children.select{ |path| File.extname(path) == ".framework" } # Pod::UI.puts "Built #{frameworks.count} #{'frameworks'.pluralize(frameworks.count)}" # pod_target = target # consumer = pod_target.root_spec.consumer(pod_target.platform.name) # file_accessor = Pod::Sandbox::FileAccessor.new(sandbox.pod_dir(pod_target.pod_name), consumer) # frameworks += file_accessor.vendored_libraries # frameworks += file_accessor.vendored_frameworks # frameworks.uniq! # frameworks.each do |framework| # FileUtils.mkdir_p destination # FileUtils.cp_r framework, destination, :remove_destination => true # end # build_dir.rmtree if build_dir.directory? end
check_one_pod_should_have_only_one_target(prebuilt_targets)
click to toggle source
Check the targets, for the current limitation of the plugin
@param [Array<PodTarget>] prebuilt_targets
# File lib/cocoapods-hd/helper/target_checker.rb, line 8 def self.check_one_pod_should_have_only_one_target(prebuilt_targets) targets_have_different_platforms = prebuilt_targets.select {|t| t.pod_name != t.name } if targets_have_different_platforms.count > 0 names = targets_have_different_platforms.map(&:pod_name) raw_names = targets_have_different_platforms.map(&:name) message = "Oops, you came across a limitation of cocoapods-binary. The plugin requires that one pod should have ONLY ONE target in the 'Pod.xcodeproj'. There are mainly 2 situations \ causing this problem: 1. One pod integrates in 2 or more different platforms' targets. e.g. ``` target 'iphoneApp' do pod 'A', :binary => true end target 'watchApp' do pod 'A' end ``` 2. Use different subspecs in multiple targets. e.g. ``` target 'iphoneApp' do pod 'A/core' pod 'A/network' end target 'iphoneAppTest' do pod 'A/core' end ``` Related pods: #{names}, target names: #{raw_names} " raise Informative, message end end
keyword()
click to toggle source
# File lib/cocoapods-hd/helper/podfile_options.rb, line 4 def self.keyword :binary end
remove_build_dir(sandbox_root)
click to toggle source
# File lib/cocoapods-hd/build/build_framework.rb, line 192 def self.remove_build_dir(sandbox_root) path = build_dir(sandbox_root) path.rmtree if path.exist? end
Private Class Methods
build_dir(sandbox_root)
click to toggle source
# File lib/cocoapods-hd/build/build_framework.rb, line 199 def self.build_dir(sandbox_root) # don't know why xcode chose this folder sandbox_root.parent + 'build' end