Class: Pod::Target::BuildSettings

Inherits:
Object
  • Object
show all
Defined in:
lib/cocoapods/target/build_settings.rb

Overview

Since:

  • 1.5.0

Direct Known Subclasses

AggregateTargetSettings, PodTargetSettings

Defined Under Namespace

Classes: AggregateTargetSettings, PodTargetSettings

Constants collapse

PLURAL_SETTINGS =

Returns The build settings that should be treated as arrays, rather than strings.

Returns:

  • (Set<String>)

    The build settings that should be treated as arrays, rather than strings.

Since:

  • 1.5.0

%w(
  ALTERNATE_PERMISSIONS_FILES
  ARCHS
  BUILD_VARIANTS
  EXCLUDED_SOURCE_FILE_NAMES
  FRAMEWORK_SEARCH_PATHS
  GCC_PREPROCESSOR_DEFINITIONS
  GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS
  HEADER_SEARCH_PATHS
  INCLUDED_SOURCE_FILE_NAMES
  INFOPLIST_PREPROCESSOR_DEFINITIONS
  LD_RUNPATH_SEARCH_PATHS
  LIBRARY_SEARCH_PATHS
  LOCALIZED_STRING_MACRO_NAMES
  OTHER_CFLAGS
  OTHER_CPLUSPLUSFLAGS
  OTHER_LDFLAGS
  OTHER_SWIFT_FLAGS
  REZ_SEARCH_PATHS
  SECTORDER_FLAGS
  SWIFT_ACTIVE_COMPILATION_CONDITIONS
  SWIFT_INCLUDE_PATHS
  SYSTEM_FRAMEWORK_SEARCH_PATHS
  SYSTEM_HEADER_SEARCH_PATHS
  USER_HEADER_SEARCH_PATHS
  WARNING_CFLAGS
  WARNING_LDFLAGS
).to_set.freeze
CONFIGURATION_BUILD_DIR_VARIABLE =

Returns The variable for the configuration build directory used when building pod targets.

Returns:

  • (String)

    The variable for the configuration build directory used when building pod targets.

Since:

  • 1.5.0

'${PODS_CONFIGURATION_BUILD_DIR}'
XCFRAMEWORKS_BUILD_DIR_VARIABLE =

Returns The variable for the configuration intermediate frameworks directory used for building pod targets that contain vendored xcframeworks.

Returns:

  • (String)

    The variable for the configuration intermediate frameworks directory used for building pod targets that contain vendored xcframeworks.

Since:

  • 1.5.0

'${PODS_XCFRAMEWORKS_BUILD_DIR}'

Public API collapse

DSL collapse

Public API collapse

Build System collapse

Code Signing collapse

Frameworks collapse

Libraries collapse

Clang collapse

Swift collapse

Linking collapse

Constructor Details

#initialize(target) ⇒ BuildSettings

Initialize a new instance

Parameters:

Since:

  • 1.5.0



176
177
178
179
# File 'lib/cocoapods/target/build_settings.rb', line 176

def initialize(target)
  @target = target
  @__memoized = {}
end

Class Attribute Details

.build_settings_namesSet<String> (readonly)

be present in the #xcconfig

Returns:

  • (Set<String>)

    a set of all the build settings names that will

Since:

  • 1.5.0



159
160
161
# File 'lib/cocoapods/target/build_settings.rb', line 159

def build_settings_names
  @build_settings_names
end

Instance Attribute Details

#targetTarget (readonly)

Returns The target this build settings object is generating build settings for.

Returns:

  • (Target)

    The target this build settings object is generating build settings for

Since:

  • 1.5.0



169
170
171
# File 'lib/cocoapods/target/build_settings.rb', line 169

def target
  @target
end

Class Method Details

.xcframework_intermediate_dir(xcframework) ⇒ String

Returns the path to the directory containing the xcframework slice.

Parameters:

  • xcframework (XCFramework)

    the xcframework slice that will be copied to the intermediates dir

Returns:

  • (String)

    the path to the directory containing the xcframework slice

Since:

  • 1.5.0



147
148
149
# File 'lib/cocoapods/target/build_settings.rb', line 147

def self.xcframework_intermediate_dir(xcframework)
  "#{XCFRAMEWORKS_BUILD_DIR_VARIABLE}/#{xcframework.target_name}"
end

Instance Method Details

#clang_warn_quoted_include_in_framework_headerBoolean

Xcode 12 turns on this warning by default which is problematic for CocoaPods-generated imports which use double-quoted paths. The ‘clang_warn_quoted_include_in_framework_header` build setting for the #target.

The return value from this method will be: ‘clang_warn_quoted_include_in_framework_header, build_setting`.

Returns:

  • (Boolean)


338
339
340
# File 'lib/cocoapods/target/build_settings.rb', line 338

define_build_settings_method :clang_warn_quoted_include_in_framework_header, :build_setting => true do
  'NO'
end

#code_sign_identityString

The ‘code_sign_identity` build setting for the #target.

The return value from this method will be: ‘code_sign_identity, build_setting`.

Returns:

  • (String)


235
236
237
238
239
# File 'lib/cocoapods/target/build_settings.rb', line 235

define_build_settings_method :code_sign_identity, :build_setting => true do
  return unless target.build_as_dynamic?
  return unless target.platform.to_sym == :osx
  ''
end

#framework_search_pathsArray<String>

The ‘framework_search_paths` build setting for the #target.

The return value from this method will be: ‘framework_search_paths, build_setting, memoized`.

Returns:

  • (Array<String>)


256
257
258
# File 'lib/cocoapods/target/build_settings.rb', line 256

define_build_settings_method :framework_search_paths, :build_setting => true, :memoized => true do
  framework_search_paths_to_import_developer_frameworks(frameworks + weak_frameworks)
end

#framework_search_paths_to_import_developer_frameworks(frameworks) ⇒ Array<String>

Returns the ‘FRAMEWORK_SEARCH_PATHS` needed to import developer frameworks.

Parameters:

  • frameworks (Array<String>)

    The list of framework names

Returns:

  • (Array<String>)

    the ‘FRAMEWORK_SEARCH_PATHS` needed to import developer frameworks

Since:

  • 1.5.0



265
266
267
268
269
270
271
# File 'lib/cocoapods/target/build_settings.rb', line 265

def framework_search_paths_to_import_developer_frameworks(frameworks)
  if frameworks.include?('XCTest') || frameworks.include?('SenTestingKit')
    %w[ $(PLATFORM_DIR)/Developer/Library/Frameworks ]
  else
    []
  end
end

#frameworksArray<String>

The ‘frameworks` build setting for the #target.

The return value from this method will be: ‘frameworks`.

Returns:

  • (Array<String>)


246
247
248
# File 'lib/cocoapods/target/build_settings.rb', line 246

define_build_settings_method :frameworks do
  []
end

#gcc_preprocessor_definitionsArray<String>

The ‘gcc_preprocessor_definitions` build setting for the #target.

The return value from this method will be: ‘gcc_preprocessor_definitions, build_setting`.

Returns:

  • (Array<String>)


287
288
289
# File 'lib/cocoapods/target/build_settings.rb', line 287

define_build_settings_method :gcc_preprocessor_definitions, :build_setting => true do
  %w( COCOAPODS=1 )
end

#initialize_copy(other) ⇒ Object

Since:

  • 1.5.0



181
182
183
184
# File 'lib/cocoapods/target/build_settings.rb', line 181

def initialize_copy(other)
  super
  @__memoized = {}
end

#librariesArray<String>

The ‘libraries` build setting for the #target.

The return value from this method will be: ‘libraries`.

Returns:

  • (Array<String>)


278
279
280
# File 'lib/cocoapods/target/build_settings.rb', line 278

define_build_settings_method :libraries do
  []
end

#module_map_filesArray<String>

The ‘module_map_files` build setting for the #target.

The return value from this method will be: ‘module_map_files`.

Returns:

  • (Array<String>)


297
298
299
# File 'lib/cocoapods/target/build_settings.rb', line 297

define_build_settings_method :module_map_files do
  []
end

#other_cflagsArray<String>

The ‘other_cflags` build setting for the #target.

The return value from this method will be: ‘other_cflags, build_setting, memoized`.

Returns:

  • (Array<String>)


292
293
294
# File 'lib/cocoapods/target/build_settings.rb', line 292

define_build_settings_method :other_cflags, :build_setting => true, :memoized => true do
  module_map_files.map { |f| "-fmodule-map-file=#{f}" }
end

#other_ldflagsArray<String>

The ‘other_ldflags` build setting for the #target.

The return value from this method will be: ‘other_ldflags, build_setting, memoized`.

Returns:

  • (Array<String>)


373
374
375
376
377
378
379
380
381
382
383
# File 'lib/cocoapods/target/build_settings.rb', line 373

define_build_settings_method :other_ldflags, :build_setting => true, :memoized => true do
  ld_flags = []
  ld_flags << '-ObjC' if requires_objc_linker_flag?
  if requires_fobjc_arc?
    ld_flags << '-fobjc-arc'
  end
  libraries.each { |l| ld_flags << %(-l"#{l}") }
  frameworks.each { |f| ld_flags << '-framework' << %("#{f}") }
  weak_frameworks.each { |f| ld_flags << '-weak_framework' << %("#{f}") }
  ld_flags
end

#other_swift_flagsArray<String>

The ‘other_swift_flags` build setting for the #target.

The return value from this method will be: ‘other_swift_flags, build_setting, memoized`.

Returns:

  • (Array<String>)


314
315
316
317
318
319
# File 'lib/cocoapods/target/build_settings.rb', line 314

define_build_settings_method :other_swift_flags, :build_setting => true, :memoized => true do
  return unless target.uses_swift? || other_swift_flags_without_swift?
  flags = %w(-D COCOAPODS)
  flags.concat module_map_files.flat_map { |f| ['-Xcc', "-fmodule-map-file=#{f}"] }
  flags
end

#other_swift_flags_without_swift?Boolean

Returns Whether ‘OTHER_SWIFT_FLAGS` should be generated when the target does not use swift.

Returns:

  • (Boolean)

    Whether ‘OTHER_SWIFT_FLAGS` should be generated when the target does not use swift.

Since:

  • 1.5.0



309
310
311
# File 'lib/cocoapods/target/build_settings.rb', line 309

def other_swift_flags_without_swift?
  false
end

#pods_build_dirString

The ‘pods_build_dir` build setting for the #target.

The return value from this method will be: ‘pods_build_dir, build_setting`.

Returns:

  • (String)


212
213
214
# File 'lib/cocoapods/target/build_settings.rb', line 212

define_build_settings_method :pods_build_dir, :build_setting => true do
  '${BUILD_DIR}'
end

#pods_configuration_build_dirString

The ‘pods_configuration_build_dir` build setting for the #target.

The return value from this method will be: ‘pods_configuration_build_dir, build_setting`.

Returns:

  • (String)


217
218
219
# File 'lib/cocoapods/target/build_settings.rb', line 217

define_build_settings_method :pods_configuration_build_dir, :build_setting => true do
  '${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)'
end

#pods_xcframeworks_build_dirObject

The ‘pods_xcframeworks_build_dir` build setting for the #target.

The return value from this method will be: ‘pods_xcframeworks_build_dir, build_setting`.



221
222
223
# File 'lib/cocoapods/target/build_settings.rb', line 221

define_build_settings_method :pods_xcframeworks_build_dir, :build_setting => true do
  '$(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates'
end

#requires_fobjc_arc?Boolean

The ‘requires_fobjc_arc?` build setting for the #target.

The return value from this method will be: ‘requires_fobjc_arc?`.

Returns:

  • (Boolean)


331
332
333
# File 'lib/cocoapods/target/build_settings.rb', line 331

define_build_settings_method :requires_fobjc_arc? do
  false
end

#requires_objc_linker_flag?Boolean

The ‘requires_objc_linker_flag?` build setting for the #target.

The return value from this method will be: ‘requires_objc_linker_flag?`.

Returns:

  • (Boolean)


326
327
328
# File 'lib/cocoapods/target/build_settings.rb', line 326

define_build_settings_method :requires_objc_linker_flag? do
  false
end

#save_as(path) ⇒ Xcodeproj::Config

Saves the generated xcconfig to the given path

Parameters:

  • path (String, Pathname)

    The path the xcconfig will be saved to

Returns:

  • (Xcodeproj::Config)

See Also:

Since:

  • 1.5.0



203
204
205
# File 'lib/cocoapods/target/build_settings.rb', line 203

def save_as(path)
  xcconfig.save_as(path)
end

#use_recursive_script_inputs_in_script_phasesString

The ‘use_recursive_script_inputs_in_script_phases` build setting for the #target.

The return value from this method will be: ‘use_recursive_script_inputs_in_script_phases, build_setting`.

Returns:

  • (String)


226
227
228
# File 'lib/cocoapods/target/build_settings.rb', line 226

define_build_settings_method :use_recursive_script_inputs_in_script_phases, :build_setting => true do
  'YES'
end

#weak_frameworksArray<String>

The ‘weak_frameworks` build setting for the #target.

The return value from this method will be: ‘weak_frameworks`.

Returns:

  • (Array<String>)


251
252
253
# File 'lib/cocoapods/target/build_settings.rb', line 251

define_build_settings_method :weak_frameworks do
  []
end

#xcconfigXcodeproj::Config Also known as: generate

The ‘xcconfig` build setting for the #target.

The return value from this method will be: ‘xcconfig, memoized`.

Returns:

  • (Xcodeproj::Config)


187
188
189
190
# File 'lib/cocoapods/target/build_settings.rb', line 187

define_build_settings_method :xcconfig, :memoized => true do
  settings = add_inherited_to_plural(to_h)
  Xcodeproj::Config.new(settings)
end