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.

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_MODULE_VERIFIER_FLAGS
  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.

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.

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

Since:

  • 1.5.0



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

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

Class Attribute Details

.build_settings_namesSet<String> (readonly)

be present in the #xcconfig

Since:

  • 1.5.0



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

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.

Since:

  • 1.5.0



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

def target
  @target
end

Class Method Details

.xcframework_intermediate_dir(xcframework) ⇒ String

Returns the path to the directory containing the xcframework slice.

Since:

  • 1.5.0



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

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`.



344
345
346
# File 'lib/cocoapods/target/build_settings.rb', line 344

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`.



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

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`.



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

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.

Since:

  • 1.5.0



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

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.



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

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`.



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

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

#initialize_copy(other) ⇒ Object

Since:

  • 1.5.0



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

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.



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

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.



303
304
305
# File 'lib/cocoapods/target/build_settings.rb', line 303

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`.



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

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`.



379
380
381
382
383
384
385
386
387
388
389
# File 'lib/cocoapods/target/build_settings.rb', line 379

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_module_verifier_flagsArray<String>

The other_module_verifier_flags build setting for the #target.

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



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

define_build_settings_method :other_module_verifier_flags, :build_setting => true, :memoized => true do
  []
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`.



320
321
322
323
324
325
# File 'lib/cocoapods/target/build_settings.rb', line 320

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.

Since:

  • 1.5.0



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

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`.



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

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`.



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

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`.



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

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?.



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

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?.



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

define_build_settings_method :requires_objc_linker_flag? do
  false
end

#save_as(path) ⇒ Xcodeproj::Config

Saves the generated xcconfig to the given path

See Also:

Since:

  • 1.5.0



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

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`.



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

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.



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

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`.



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

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