module Xcodeproj::Project::ProjectHelper
def self.common_build_settings(type, platform, deployment_target = nil, target_product_type = nil)
-
(Hash)- The common build settings
Parameters:
-
deployment_target(String) -- -
platform(Symbol) -- -
type(Symbol) --
def self.common_build_settings(type, platform, deployment_target = nil, target_product_type = nil) if target_product_type == Constants::PRODUCT_TYPE_UTI[:bundle] build_settings = { 'PRODUCT_NAME' => '$(TARGET_NAME)', 'WRAPPER_EXTENSION' => 'bundle', 'SKIP_INSTALL' => 'YES' } if platform == :osx build_settings['COMBINE_HIDPI_IMAGES'] = 'YES' build_settings['SDKROOT'] = 'macosx' else build_settings['SDKROOT'] = 'iphoneos' end build_settings else common_settings = Constants::COMMON_BUILD_SETTINGS settings = deep_dup(common_settings[:all]) settings.merge!(deep_dup(common_settings[type])) settings.merge!(deep_dup(common_settings[platform])) settings.merge!(deep_dup(common_settings[[platform, type]])) if deployment_target if platform == :ios settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target elsif platform == :osx settings['MACOSX_DEPLOYMENT_TARGET'] = deployment_target end end settings end end
def self.configuration_list(project, platform, deployment_target = nil)
-
(XCConfigurationList)- the generated configuration list.
Parameters:
-
deployment_target(String) -- -
platform(Symbol) -- -
project(Project) --
def self.configuration_list(project, platform, deployment_target = nil) cl = project.new(XCConfigurationList) cl.default_configuration_is_visible = '0' cl.default_configuration_name = 'Release' release_conf = project.new(XCBuildConfiguration) release_conf.name = 'Release' release_conf.build_settings = common_build_settings(:release, platform, deployment_target) debug_conf = project.new(XCBuildConfiguration) debug_conf.name = 'Debug' debug_conf.build_settings = common_build_settings(:debug, platform, deployment_target) cl.build_configurations << release_conf cl.build_configurations << debug_conf cl end
def self.deep_dup(object)
-
(Object)- The deeply copy of the obejct object.
Parameters:
-
object(Object) --
def self.deep_dup(object) case object when Hash new_hash = {} object.each do |key, value| new_hash[key] = deep_dup(value) end new_hash when Array object.map { |value| deep_dup(value) } else object.dup end end
def self.new_resources_bundle(project, name, platform, product_group)
-
(PBXNativeTarget)- the target.
Parameters:
-
platform(Symbol) -- -
name(String) -- -
project(Project) --
def self.new_resources_bundle(project, name, platform, product_group) # Target target = project.new(PBXNativeTarget) project.targets << target target.name = name target.product_name = name target.product_type = Constants::PRODUCT_TYPE_UTI[:bundle] build_settings = common_build_settings(nil, platform, nil, target.product_type) # Configuration List cl = project.new(XCConfigurationList) cl.default_configuration_is_visible = '0' cl.default_configuration_name = 'Release' release_conf = project.new(XCBuildConfiguration) release_conf.name = 'Release' release_conf.build_settings = build_settings debug_conf = project.new(XCBuildConfiguration) debug_conf.name = 'Debug' debug_conf.build_settings = build_settings cl.build_configurations << release_conf cl.build_configurations << debug_conf cl target.build_configuration_list = cl # Product product = product_group.new_bundle(name) target.product_reference = product # Build phases target.build_phases << project.new(PBXSourcesBuildPhase) target.build_phases << project.new(PBXFrameworksBuildPhase) target.build_phases << project.new(PBXResourcesBuildPhase) target end
def self.new_target(project, type, name, platform, deployment_target, product_group)
-
(PBXNativeTarget)- the target.
Parameters:
-
deployment_target(String) -- -
platform(Symbol) -- -
name(String) -- -
type(Symbol) -- -
project(Project) --
def self.new_target(project, type, name, platform, deployment_target, product_group) # Target target = project.new(PBXNativeTarget) project.targets << target target.name = name target.product_name = name target.product_type = Constants::PRODUCT_TYPE_UTI[type] target.build_configuration_list = configuration_list(project, platform, deployment_target) # Product product = product_group.new_product_ref_for_target(name, type) target.product_reference = product # Build phases target.build_phases << project.new(PBXSourcesBuildPhase) target.build_phases << project.new(PBXFrameworksBuildPhase) # Frameworks framework_name = (platform == :ios) ? 'Foundation' : 'Cocoa' framework_ref = target.add_system_framework(framework_name) target end