Method: Xcodeproj::Project::Object::XCBuildConfiguration#resolve_build_setting

Defined in:
lib/xcodeproj/project/object/build_configuration.rb

#resolve_build_setting(key, root_target = nil, previous_key = nil) ⇒ String

Gets the value for the given build setting considering any configuration file present and resolving inheritance between them. It also takes in consideration environment variables.

Parameters:

  • key (String)

    the key of the build setting.

  • root_target (PBXNativeTarget) (defaults to: nil)

    use this to resolve complete recursion between project and targets.

  • previous_key (String) (defaults to: nil)

    use this to resolve complete recursion between different build settings.

Returns:

  • (String)

    The value of the build setting



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/xcodeproj/project/object/build_configuration.rb', line 93

def resolve_build_setting(key, root_target = nil, previous_key = nil)
  setting = build_settings[key]
  setting = resolve_variable_substitution(key, setting, root_target, previous_key)

  config_setting = config[key]
  config_setting = resolve_variable_substitution(key, config_setting, root_target, previous_key)

  project_setting = project.build_configuration_list[name]
  project_setting = nil if equal?(project_setting)
  project_setting &&= project_setting.resolve_build_setting(key, root_target)

  defaults = {
    'CONFIGURATION' => name,
    'SRCROOT' => project.project_dir.to_s,
  }

  # if previous_key is nil, it means that we're back at the first call, so we can replace our sentinel string
  # used to prevent recursion with nil
  if previous_key.nil? && setting == MUTUAL_RECURSION_SENTINEL
    setting = nil
  end

  [defaults[key], project_setting, config_setting, setting, ENV[key]].compact.reduce(nil) do |inherited, value|
    expand_build_setting(value, inherited)
  end
end