module Xcodeproj::Project::ProjectHelper

def self.common_build_settings(type, platform = nil, deployment_target = nil, target_product_type = nil, language = :objc)

Returns:
  • (Hash) - The common build settings

Parameters:
  • language (Symbol) --
  • target_product_type (Symbol) --
  • deployment_target (String) --
  • platform (Symbol) --
  • type (Symbol) --
def self.common_build_settings(type, platform = nil, deployment_target = nil, target_product_type = nil, language = :objc)
  target_product_type = (Constants::PRODUCT_TYPE_UTI.find { |_, v| v == target_product_type } || [target_product_type || :application])[0]
  common_settings = Constants::COMMON_BUILD_SETTINGS
  # Use intersecting settings for all key sets as base
  settings = deep_dup(common_settings[:all])
  # Match further common settings by key sets
  keys = [type, platform, target_product_type, language].compact
  key_combinations = (1..keys.length).flat_map { |n| keys.combination(n).to_a }
  key_combinations.each do |key_combination|
    settings.merge!(deep_dup(common_settings[key_combination] || {}))
  end
  if deployment_target
    case platform
    when :ios
      settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
      settings['CLANG_ENABLE_OBJC_WEAK'] = 'NO' if deployment_target < '5'
    when :osx
      settings['MACOSX_DEPLOYMENT_TARGET'] = deployment_target
      settings['CLANG_ENABLE_OBJC_WEAK'] = 'NO' if deployment_target < '10.7'
    when :tvos
      settings['TVOS_DEPLOYMENT_TARGET'] = deployment_target
    when :watchos
      settings['WATCHOS_DEPLOYMENT_TARGET'] = deployment_target
    end
  end
  settings
end