Class: Pod::Target::BuildSettings::PodTargetSettings

Inherits:
Pod::Target::BuildSettings show all
Defined in:
lib/cocoapods/target/build_settings.rb

Overview

A subclass that generates build settings for a PodTarget

Since:

  • 1.5.0

Constant Summary

Constants inherited from Pod::Target::BuildSettings

CONFIGURATION_BUILD_DIR_VARIABLE, PLURAL_SETTINGS

Public API collapse

Attributes inherited from Pod::Target::BuildSettings

#target

Public API collapse

Paths collapse

Frameworks collapse

Libraries collapse

Clang collapse

Swift collapse

Linking collapse

Packaging collapse

Target Properties collapse

Methods inherited from Pod::Target::BuildSettings

#code_sign_identity, #framework_search_paths_to_import_developer_frameworks, #gcc_preprocessor_definitions, #initialize_copy, #other_cflags, #other_ldflags, #pods_build_dir, #pods_configuration_build_dir, #save_as, #use_recursive_script_inputs_in_script_phases

Constructor Details

#initialize(target, non_library_spec = nil, configuration: nil) ⇒ PodTargetSettings

Initializes a new instance

Parameters:

Since:

  • 1.5.0


527
528
529
530
531
532
533
534
535
536
537
538
539
540
# File 'lib/cocoapods/target/build_settings.rb', line 527

def initialize(target, non_library_spec = nil, configuration: nil)
  super(target)
  if @non_library_spec = non_library_spec
    @test_xcconfig = non_library_spec.test_specification?
    @app_xcconfig = non_library_spec.app_specification?
    @xcconfig_spec_type = non_library_spec.spec_type
    @library_xcconfig = false
  else
    @test_xcconfig = @app_xcconfig = false
    @xcconfig_spec_type = :library
    @library_xcconfig = true
  end
  (@configuration = configuration) || raise("No configuration for #{self}.")
end

Instance Attribute Details

#app_xcconfigBoolean (readonly) Also known as: app_xcconfig?

Returns whether settings are being generated for an application bundle.

Returns:

  • (Boolean)

    whether settings are being generated for an application bundle

Since:

  • 1.5.0


498
499
500
# File 'lib/cocoapods/target/build_settings.rb', line 498

def app_xcconfig
  @app_xcconfig
end

#library_xcconfigBoolean (readonly) Also known as: library_xcconfig?

Returns whether settings are being generated for an library bundle.

Returns:

  • (Boolean)

    whether settings are being generated for an library bundle

Since:

  • 1.5.0


504
505
506
# File 'lib/cocoapods/target/build_settings.rb', line 504

def library_xcconfig
  @library_xcconfig
end

#non_library_specSpecification (readonly)

Returns The non-library specification these build settings are for or `nil`.

Returns:

  • (Specification)

    The non-library specification these build settings are for or `nil`.

Since:

  • 1.5.0


514
515
516
# File 'lib/cocoapods/target/build_settings.rb', line 514

def non_library_spec
  @non_library_spec
end

#test_xcconfigBoolean (readonly) Also known as: test_xcconfig?

Returns whether settings are being generated for a test bundle.

Returns:

  • (Boolean)

    whether settings are being generated for a test bundle

Since:

  • 1.5.0


492
493
494
# File 'lib/cocoapods/target/build_settings.rb', line 492

def test_xcconfig
  @test_xcconfig
end

Class Method Details

.build_settings_namesObject


485
486
487
# File 'lib/cocoapods/target/build_settings.rb', line 485

def self.build_settings_names
  @build_settings_names | BuildSettings.build_settings_names
end

Instance Method Details

#application_extension_api_onlyString

The `application_extension_api_only` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (String)

911
912
913
# File 'lib/cocoapods/target/build_settings.rb', line 911

define_build_settings_method :application_extension_api_only, :build_setting => true, :memoized => true do
  target.application_extension_api_only ? 'YES' : nil
end

#configuration_build_dirString

The `configuration_build_dir` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (String)

905
906
907
908
# File 'lib/cocoapods/target/build_settings.rb', line 905

define_build_settings_method :configuration_build_dir, :build_setting => true, :memoized => true do
  return if non_library_xcconfig?
  target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE)
end

#consumer_frameworksArray<String>

The `consumer_frameworks` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

567
568
569
# File 'lib/cocoapods/target/build_settings.rb', line 567

define_build_settings_method :consumer_frameworks, :memoized => true do
  spec_consumers.flat_map(&:frameworks)
end

#dependent_targetsArray<PodTarget>

The `dependent_targets` build setting for the Pod::Target::BuildSettings#target.

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

Returns:


920
921
922
923
924
925
926
927
928
929
930
# File 'lib/cocoapods/target/build_settings.rb', line 920

define_build_settings_method :dependent_targets, :memoized => true do
  select_maximal_pod_targets(
    if test_xcconfig?
      target.dependent_targets_for_test_spec(non_library_spec, :configuration => @configuration)
    elsif app_xcconfig?
      target.dependent_targets_for_app_spec(non_library_spec, :configuration => @configuration)
    else
      target.recursive_dependent_targets(:configuration => @configuration)
    end,
  )
end

The `dependent_targets_to_link` build setting for the Pod::Target::BuildSettings#target.

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

Returns:


933
934
935
936
937
938
939
940
941
# File 'lib/cocoapods/target/build_settings.rb', line 933

define_build_settings_method :dependent_targets_to_link, :memoized => true do
  if test_xcconfig?
    # we're embedding into an app defined by an app spec
    host_targets = target.app_host_dependent_targets_for_spec(non_library_spec, :configuration => @configuration)
    dependent_targets - host_targets
  else
    dependent_targets
  end
end

#dynamic_frameworks_to_importArray<String>

The `dynamic_frameworks_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

608
609
610
611
612
613
614
615
616
617
# File 'lib/cocoapods/target/build_settings.rb', line 608

define_build_settings_method :dynamic_frameworks_to_import, :memoized => true do
  dynamic_frameworks_to_import = vendored_dynamic_frameworks.map { |f| File.basename(f, '.framework') }
  dynamic_frameworks_to_import.concat vendored_xcframeworks.
    select(&:includes_dynamic_slices?).
    map(&:name).
    uniq
  dynamic_frameworks_to_import << target.product_basename if target.should_build? && target.build_as_dynamic_framework?
  dynamic_frameworks_to_import.concat consumer_frameworks
  dynamic_frameworks_to_import
end

#dynamic_libraries_to_importArray<String>

The `dynamic_libraries_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

738
739
740
741
742
743
# File 'lib/cocoapods/target/build_settings.rb', line 738

define_build_settings_method :dynamic_libraries_to_import, :memoized => true do
  dynamic_libraries_to_import = linker_names_from_libraries(vendored_dynamic_libraries)
  dynamic_libraries_to_import.concat spec_consumers.flat_map(&:libraries)
  dynamic_libraries_to_import << target.product_basename if target.should_build? && target.build_as_dynamic_library?
  dynamic_libraries_to_import
end

#file_accessorsArray<Sandbox::FileAccessor>

The `file_accessors` build setting for the Pod::Target::BuildSettings#target.

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

Returns:


967
968
969
970
971
972
973
# File 'lib/cocoapods/target/build_settings.rb', line 967

define_build_settings_method :file_accessors, :memoized => true do
  if non_library_xcconfig?
    target.file_accessors.select { |fa| non_library_spec == fa.spec }
  else
    target.file_accessors.select { |fa| fa.spec.spec_type == @xcconfig_spec_type }
  end
end

#framework_header_search_pathString

The `framework_header_search_path` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (String)

648
649
650
651
# File 'lib/cocoapods/target/build_settings.rb', line 648

define_build_settings_method :framework_header_search_path, :memoized => true do
  return unless target.build_as_framework?
  "#{target.build_product_path}/Headers"
end

#framework_search_pathsArray<String>

The `framework_search_paths` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

639
640
641
642
643
644
645
# File 'lib/cocoapods/target/build_settings.rb', line 639

define_build_settings_method :framework_search_paths, :build_setting => true, :memoized => true, :sorted => true, :uniqued => true do
  paths = super().dup
  paths.concat dependent_targets.flat_map { |pt| pt.build_settings[@configuration].framework_search_paths_to_import }
  paths.concat framework_search_paths_to_import
  paths.delete(target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE)) if library_xcconfig?
  paths
end

#framework_search_paths_to_importArray<String>

The `framework_search_paths_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

669
670
671
672
673
674
675
# File 'lib/cocoapods/target/build_settings.rb', line 669

define_build_settings_method :framework_search_paths_to_import, :memoized => true do
  paths = framework_search_paths_to_import_developer_frameworks(consumer_frameworks)
  paths.concat vendored_framework_search_paths
  return paths unless target.build_as_framework? && target.should_build?

  paths + [target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE)]
end

#frameworksArray<String>

The `frameworks` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `frameworks, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
# File 'lib/cocoapods/target/build_settings.rb', line 572

define_build_settings_method :frameworks, :memoized => true, :sorted => true, :uniqued => true do
  return [] if target.build_as_static? && library_xcconfig?

  frameworks = []
  frameworks.concat consumer_frameworks
  if library_xcconfig?
    # We know that this library target is being built dynamically based
    # on the guard above, so include any vendored static frameworks.
    if target.should_build?
      frameworks.concat vendored_static_frameworks.map { |l| File.basename(l, '.framework') }
      frameworks.concat vendored_xcframeworks.map(&:name)
    end
    # Also include any vendored dynamic frameworks of dependencies.
    frameworks.concat dependent_targets.reject(&:should_build?).flat_map { |pt| pt.build_settings[@configuration].dynamic_frameworks_to_import }
  else
    frameworks.concat dependent_targets_to_link.flat_map { |pt| pt.build_settings[@configuration].frameworks_to_import }
  end

  frameworks
end

#frameworks_to_importArray<String>

The `frameworks_to_import` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `frameworks_to_import, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

629
630
631
# File 'lib/cocoapods/target/build_settings.rb', line 629

define_build_settings_method :frameworks_to_import, :memoized => true, :sorted => true, :uniqued => true do
  static_frameworks_to_import + dynamic_frameworks_to_import
end

#header_search_pathsArray<String>

The `header_search_paths` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `header_search_paths, build_setting, memoized, sorted`.

Returns:

  • (Array<String>)

818
819
820
# File 'lib/cocoapods/target/build_settings.rb', line 818

define_build_settings_method :header_search_paths, :build_setting => true, :memoized => true, :sorted => true do
  target.header_search_paths(:include_dependent_targets_for_test_spec => test_xcconfig? && non_library_spec, :include_dependent_targets_for_app_spec => app_xcconfig? && non_library_spec, :configuration => @configuration)
end

#ld_runpath_search_pathsArray<String>

The `ld_runpath_search_paths` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

885
886
887
888
# File 'lib/cocoapods/target/build_settings.rb', line 885

define_build_settings_method :ld_runpath_search_paths, :build_setting => true, :memoized => true do
  return if library_xcconfig?
  _ld_runpath_search_paths(:test_bundle => test_xcconfig?)
end

#librariesArray<String>

The `libraries` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `libraries, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

714
715
716
717
718
719
720
721
722
723
724
725
726
727
# File 'lib/cocoapods/target/build_settings.rb', line 714

define_build_settings_method :libraries, :memoized => true, :sorted => true, :uniqued => true do
  return [] if library_xcconfig? && target.build_as_static?

  libraries = []
  if non_library_xcconfig? || target.build_as_dynamic?
    libraries.concat linker_names_from_libraries(vendored_static_libraries)
    libraries.concat libraries_to_import
  end
  if non_library_xcconfig?
    libraries.concat dependent_targets.flat_map { |pt| pt.build_settings[@configuration].dynamic_libraries_to_import }
    libraries.concat dependent_targets_to_link.flat_map { |pt| pt.build_settings[@configuration].static_libraries_to_import }
  end
  libraries
end

#libraries_to_importArray<String>

The `libraries_to_import` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `libraries_to_import, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

746
747
748
# File 'lib/cocoapods/target/build_settings.rb', line 746

define_build_settings_method :libraries_to_import, :memoized => true, :sorted => true, :uniqued => true do
  static_libraries_to_import + dynamic_libraries_to_import
end

#library_search_pathsArray<String>

The `library_search_paths` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `library_search_paths, build_setting, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

751
752
753
754
755
756
757
758
759
760
761
762
763
764
# File 'lib/cocoapods/target/build_settings.rb', line 751

define_build_settings_method :library_search_paths, :build_setting => true, :memoized => true, :sorted => true, :uniqued => true do
  library_search_paths = should_apply_xctunwrap_fix? ? ['$(PLATFORM_DIR)/Developer/usr/lib'] : []
  return library_search_paths if library_xcconfig? && target.build_as_static?

  library_search_paths.concat library_search_paths_to_import.dup
  library_search_paths.concat dependent_targets.flat_map { |pt| pt.build_settings[@configuration].vendored_dynamic_library_search_paths }
  if library_xcconfig?
    library_search_paths.delete(target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE))
  else
    library_search_paths.concat(dependent_targets.flat_map { |pt| pt.build_settings[@configuration].library_search_paths_to_import })
  end

  library_search_paths
end

#library_search_paths_to_importArray<String>

The `library_search_paths_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

787
788
789
790
791
792
# File 'lib/cocoapods/target/build_settings.rb', line 787

define_build_settings_method :library_search_paths_to_import, :memoized => true do
  vendored_library_search_paths = vendored_static_library_search_paths + vendored_dynamic_library_search_paths
  return vendored_library_search_paths if target.build_as_framework? || !target.should_build?

  vendored_library_search_paths << target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE)
end

#linker_names_from_libraries(libraries) ⇒ Array<String>

Converts array of library path references to just the names to use link each library, e.g. from '/path/to/libSomething.a' to 'Something'

Parameters:

  • libraries (Array<String>)

Returns:

  • (Array<String>)

Since:

  • 1.5.0


709
710
711
# File 'lib/cocoapods/target/build_settings.rb', line 709

def linker_names_from_libraries(libraries)
  libraries.map { |l| File.basename(l, l.extname).sub(/\Alib/, '') }
end

#merged_pod_target_xcconfigsHash{String, String}

Merges the pod_target_xcconfig for all pod targets into a single hash and warns on conflicting definitions.

The `merged_pod_target_xcconfigs` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Hash{String, String})

961
962
963
964
# File 'lib/cocoapods/target/build_settings.rb', line 961

define_build_settings_method :merged_pod_target_xcconfigs, :memoized => true do
  merged_xcconfigs(pod_target_xcconfig_values_by_consumer_by_key, :pod_target_xcconfig,
                   :overriding => non_library_xcconfig? ? target.build_settings[@configuration].merged_pod_target_xcconfigs : {})
end

#module_map_file_to_importArray<String>

The `module_map_file_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

804
805
806
807
808
809
810
811
812
813
814
815
# File 'lib/cocoapods/target/build_settings.rb', line 804

define_build_settings_method :module_map_file_to_import, :memoized => true do
  return unless target.should_build?
  return if target.build_as_framework? # framework module maps are automatically discovered
  return unless target.defines_module?

  if target.uses_swift?
    # for swift, we have a custom build phase that copies in the module map, appending the .Swift module
    "${PODS_CONFIGURATION_BUILD_DIR}/#{target.label}/#{target.product_module_name}.modulemap"
  else
    "${PODS_ROOT}/#{target.module_map_path.relative_path_from(target.sandbox.root)}"
  end
end

#module_map_filesArray<String>

The `module_map_files` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

799
800
801
# File 'lib/cocoapods/target/build_settings.rb', line 799

define_build_settings_method :module_map_files, :memoized => true do
  dependent_targets.map { |pt| pt.build_settings[@configuration].module_map_file_to_import }.compact.sort
end

#non_library_xcconfig?Boolean

Returns:

  • (Boolean)

Since:

  • 1.5.0


507
508
509
# File 'lib/cocoapods/target/build_settings.rb', line 507

def non_library_xcconfig?
  !library_xcconfig?
end

#other_swift_flagsArray<String>

The `other_swift_flags` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

839
840
841
842
843
844
845
846
847
848
# File 'lib/cocoapods/target/build_settings.rb', line 839

define_build_settings_method :other_swift_flags, :build_setting => true, :memoized => true do
  return unless target.uses_swift? || other_swift_flags_without_swift?

  flags = super()
  flags << '-suppress-warnings' if target.inhibit_warnings? && library_xcconfig?
  if !target.build_as_framework? && target.defines_module? && library_xcconfig?
    flags.concat %w( -import-underlying-module -Xcc -fmodule-map-file=${SRCROOT}/${MODULEMAP_FILE} )
  end
  flags
end

#other_swift_flags_without_swift?Boolean

Returns:

  • (Boolean)

See Also:

Since:

  • 1.5.0


832
833
834
835
836
# File 'lib/cocoapods/target/build_settings.rb', line 832

def other_swift_flags_without_swift?
  return false if library_xcconfig?

  target.uses_swift_for_spec?(non_library_spec)
end

#pod_target_xcconfig_values_by_consumer_by_keyHash{String,Hash{Target,String}]

Returns the pod_target_xcconfig for the pod target and its spec consumers grouped by keys

Returns:

  • (Hash{String,Hash{Target,String}])

    HashString,Hash{Target,String]

Since:

  • 1.5.0


948
949
950
951
952
953
954
# File 'lib/cocoapods/target/build_settings.rb', line 948

def pod_target_xcconfig_values_by_consumer_by_key
  spec_consumers.each_with_object({}) do |spec_consumer, hash|
    spec_consumer.pod_target_xcconfig.each do |k, v|
      (hash[k] ||= {})[spec_consumer] = v
    end
  end
end

#pods_rootString

The `pods_root` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (String)

553
554
555
# File 'lib/cocoapods/target/build_settings.rb', line 553

define_build_settings_method :pods_root, :build_setting => true do
  '${SRCROOT}'
end

#pods_target_srcrootString

The `pods_target_srcroot` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (String)

558
559
560
# File 'lib/cocoapods/target/build_settings.rb', line 558

define_build_settings_method :pods_target_srcroot, :build_setting => true do
  target.pod_target_srcroot
end

#product_bundle_identifierString

The `product_bundle_identifier` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (String)

900
901
902
# File 'lib/cocoapods/target/build_settings.rb', line 900

define_build_settings_method :product_bundle_identifier, :build_setting => true do
  'org.cocoapods.${PRODUCT_NAME:rfc1034identifier}'
end

#public_header_search_pathsArray<String>

The `public_header_search_paths` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `public_header_search_paths, memoized, sorted`.

Returns:

  • (Array<String>)

823
824
825
# File 'lib/cocoapods/target/build_settings.rb', line 823

define_build_settings_method :public_header_search_paths, :memoized => true, :sorted => true do
  target.header_search_paths(:include_dependent_targets_for_test_spec => test_xcconfig? && non_library_spec, :include_dependent_targets_for_app_spec => app_xcconfig? && non_library_spec, :include_private_headers => false, :configuration => @configuration)
end

#requires_fobjc_arc?Boolean

The `requires_fobjc_arc?` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Boolean)

    whether the `-fobjc-arc` linker flag is required.


879
880
881
882
# File 'lib/cocoapods/target/build_settings.rb', line 879

define_build_settings_method :requires_fobjc_arc?, :memoized => true do
  target.podfile.set_arc_compatibility_flag? &&
    file_accessors.any? { |fa| fa.spec_consumer.requires_arc? }
end

#requires_objc_linker_flag?Boolean

Note:

this is only true when generating build settings for a test bundle

Returns whether the `-ObjC` linker flag is required.

Returns:

  • (Boolean)

    whether the `-ObjC` linker flag is required.

Since:

  • 1.5.0


873
874
875
# File 'lib/cocoapods/target/build_settings.rb', line 873

def requires_objc_linker_flag?
  test_xcconfig? || app_xcconfig?
end

#should_apply_xctunwrap_fix?Boolean

Xcode 11 causes an issue with frameworks or libraries before 12.2 deployment target that link or are part of test bundles that use XCTUnwrap. Apple has provided an official work around for this.

The `should_apply_xctunwrap_fix?` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `should_apply_xctunwrap_fix?, memoized`.

Returns:

  • (Boolean)

    Whether to apply the fix or not.

See Also:


991
992
993
994
995
996
# File 'lib/cocoapods/target/build_settings.rb', line 991

define_build_settings_method :should_apply_xctunwrap_fix?, :memoized => true do
  library_xcconfig? &&
    target.platform.name == :ios &&
    Version.new(target.platform.deployment_target) < Version.new('12.2') &&
    (frameworks_to_import + weak_frameworks_to_import).uniq.include?('XCTest')
end

#skip_installString

The `skip_install` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (String)

895
896
897
# File 'lib/cocoapods/target/build_settings.rb', line 895

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

#spec_consumersArray<Specification::Consumer>

The `spec_consumers` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<Specification::Consumer>)

976
977
978
979
980
981
982
# File 'lib/cocoapods/target/build_settings.rb', line 976

define_build_settings_method :spec_consumers, :memoized => true do
  if non_library_xcconfig?
    target.spec_consumers.select { |sc| non_library_spec == sc.spec }
  else
    target.spec_consumers.select { |sc| sc.spec.spec_type == @xcconfig_spec_type }
  end
end

#static_frameworks_to_importArray<String>

The `static_frameworks_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

594
595
596
597
598
599
600
601
602
603
604
605
# File 'lib/cocoapods/target/build_settings.rb', line 594

define_build_settings_method :static_frameworks_to_import, :memoized => true do
  static_frameworks_to_import = []
  static_frameworks_to_import.concat vendored_static_frameworks.map { |f| File.basename(f, '.framework') } unless target.should_build? && target.build_as_dynamic?
  unless target.should_build? && target.build_as_dynamic?
    static_frameworks_to_import.concat vendored_xcframeworks.
      select(&:includes_static_slices?).
      map(&:name).
      uniq
  end
  static_frameworks_to_import << target.product_basename if target.should_build? && target.build_as_static_framework?
  static_frameworks_to_import
end

#static_libraries_to_importArray<String>

The `static_libraries_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

730
731
732
733
734
735
# File 'lib/cocoapods/target/build_settings.rb', line 730

define_build_settings_method :static_libraries_to_import, :memoized => true do
  static_libraries_to_import = []
  static_libraries_to_import.concat linker_names_from_libraries(vendored_static_libraries) unless target.should_build? && target.build_as_dynamic?
  static_libraries_to_import << target.product_basename if target.should_build? && target.build_as_static_library?
  static_libraries_to_import
end

#swift_include_pathsArray<String>

The `swift_include_paths` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `swift_include_paths, build_setting, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

851
852
853
854
855
856
# File 'lib/cocoapods/target/build_settings.rb', line 851

define_build_settings_method :swift_include_paths, :build_setting => true, :memoized => true, :sorted => true, :uniqued => true do
  paths = dependent_targets.flat_map { |pt| pt.build_settings[@configuration].swift_include_paths_to_import }
  paths.concat swift_include_paths_to_import if non_library_xcconfig?
  paths.concat ['$(PLATFORM_DIR)/Developer/usr/lib'] if should_apply_xctunwrap_fix?
  paths
end

#swift_include_paths_to_importArray<String>

The `swift_include_paths_to_import` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

859
860
861
862
863
# File 'lib/cocoapods/target/build_settings.rb', line 859

define_build_settings_method :swift_include_paths_to_import, :memoized => true do
  return [] unless target.uses_swift? && !target.build_as_framework?

  [target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE)]
end

#system_framework_search_pathsArray<String>

The `system_framework_search_paths` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `system_framework_search_paths, build_setting, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

693
694
695
696
# File 'lib/cocoapods/target/build_settings.rb', line 693

define_build_settings_method :system_framework_search_paths, :build_setting => true, :memoized => true, :sorted => true, :uniqued => true do
  return ['$(PLATFORM_DIR)/Developer/Library/Frameworks'] if should_apply_xctunwrap_fix?
  []
end

#vendored_dynamic_frameworksArray<String>

The `vendored_dynamic_frameworks` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

683
684
685
# File 'lib/cocoapods/target/build_settings.rb', line 683

define_build_settings_method :vendored_dynamic_frameworks, :memoized => true do
  file_accessors.flat_map(&:vendored_dynamic_frameworks)
end

#vendored_dynamic_librariesArray<String>

The `vendored_dynamic_libraries` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

772
773
774
# File 'lib/cocoapods/target/build_settings.rb', line 772

define_build_settings_method :vendored_dynamic_libraries, :memoized => true do
  file_accessors.flat_map(&:vendored_dynamic_libraries)
end

#vendored_dynamic_library_search_pathsArray<String>

The `vendored_dynamic_library_search_paths` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

782
783
784
# File 'lib/cocoapods/target/build_settings.rb', line 782

define_build_settings_method :vendored_dynamic_library_search_paths, :memoized => true do
  vendored_dynamic_libraries.map { |f| File.join '${PODS_ROOT}', f.dirname.relative_path_from(target.sandbox.root) }
end

#vendored_framework_search_pathsArray<String>

The `vendored_framework_search_paths` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

654
655
656
657
658
659
660
661
662
663
664
665
666
# File 'lib/cocoapods/target/build_settings.rb', line 654

define_build_settings_method :vendored_framework_search_paths, :memoized => true do
  search_paths = []
  search_paths.concat file_accessors.
    flat_map(&:vendored_frameworks).
    map { |f| File.join '${PODS_ROOT}', f.dirname.relative_path_from(target.sandbox.root) }
  # Include each slice in the framework search paths.
  # Xcode will not search inside an .xcframework for headers within each slice
  search_paths.concat vendored_xcframeworks.
    flat_map(&:slices).
    select { |slice| slice.platform.symbolic_name == target.platform.symbolic_name }.
    flat_map { |slice| File.join '${PODS_ROOT}', slice.path.dirname.relative_path_from(target.sandbox.root) }
  search_paths
end

#vendored_static_frameworksArray<String>

The `vendored_static_frameworks` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

678
679
680
# File 'lib/cocoapods/target/build_settings.rb', line 678

define_build_settings_method :vendored_static_frameworks, :memoized => true do
  file_accessors.flat_map(&:vendored_static_frameworks)
end

#vendored_static_librariesArray<String>

The `vendored_static_libraries` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

767
768
769
# File 'lib/cocoapods/target/build_settings.rb', line 767

define_build_settings_method :vendored_static_libraries, :memoized => true do
  file_accessors.flat_map(&:vendored_static_libraries)
end

#vendored_static_library_search_pathsArray<String>

The `vendored_static_library_search_paths` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

777
778
779
# File 'lib/cocoapods/target/build_settings.rb', line 777

define_build_settings_method :vendored_static_library_search_paths, :memoized => true do
  vendored_static_libraries.map { |f| File.join '${PODS_ROOT}', f.dirname.relative_path_from(target.sandbox.root) }
end

#vendored_xcframeworksArray<Xcode::XCFramework>

The `vendored_xcframeworks` build setting for the Pod::Target::BuildSettings#target.

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

Returns:


688
689
690
# File 'lib/cocoapods/target/build_settings.rb', line 688

define_build_settings_method :vendored_xcframeworks, :memoized => true do
  file_accessors.flat_map(&:vendored_xcframeworks).map { |path| Xcode::XCFramework.new(path) }
end

#weak_frameworksArray<String>

The `weak_frameworks` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Array<String>)

620
621
622
623
624
625
626
# File 'lib/cocoapods/target/build_settings.rb', line 620

define_build_settings_method :weak_frameworks, :memoized => true do
  return [] if target.build_as_static? && library_xcconfig?

  weak_frameworks = spec_consumers.flat_map(&:weak_frameworks)
  weak_frameworks.concat dependent_targets.flat_map { |pt| pt.build_settings[@configuration].weak_frameworks_to_import }
  weak_frameworks
end

#weak_frameworks_to_importArray<String>

The `weak_frameworks_to_import` build setting for the Pod::Target::BuildSettings#target.

The return value from this method will be: `weak_frameworks_to_import, memoized, sorted, uniqued`.

Returns:

  • (Array<String>)

634
635
636
# File 'lib/cocoapods/target/build_settings.rb', line 634

define_build_settings_method :weak_frameworks_to_import, :memoized => true, :sorted => true, :uniqued => true do
  spec_consumers.flat_map(&:weak_frameworks)
end

#xcconfigXcodeproj::Xconfig

The `xcconfig` build setting for the Pod::Target::BuildSettings#target.

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

Returns:

  • (Xcodeproj::Xconfig)

543
544
545
546
# File 'lib/cocoapods/target/build_settings.rb', line 543

define_build_settings_method :xcconfig, :memoized => true do
  xcconfig = super()
  merge_spec_xcconfig_into_xcconfig(merged_pod_target_xcconfigs, xcconfig)
end