From 19fbac71c2f712af4e143bba8a56e9c6bcad551c Mon Sep 17 00:00:00 2001 From: Kiran Date: Wed, 5 Aug 2020 23:58:49 +1000 Subject: [PATCH] Prevent setting presets from overwriting settings in target xcconfig files added comment for test config change changelog updated --- CHANGELOG.md | 1 + Sources/XcodeGenKit/SettingsBuilder.swift | 4 ++-- Tests/Fixtures/settings_test.yml | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0cb51a24..3f6823821 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ #### Fixed - Allow SDK dependencies to be embedded. [#922](https://github.com/yonaskolb/XcodeGen/pull/922) @k-thorat +- Prevent setting presets from overwriting settings in target xcconfig files. [#924](https://github.com/yonaskolb/XcodeGen/pull/924) @k-thorat ## 2.17.0 diff --git a/Sources/XcodeGenKit/SettingsBuilder.swift b/Sources/XcodeGenKit/SettingsBuilder.swift index 4ac1853c3..79bfb3e59 100644 --- a/Sources/XcodeGenKit/SettingsBuilder.swift +++ b/Sources/XcodeGenKit/SettingsBuilder.swift @@ -55,6 +55,8 @@ extension Project { buildSettings[target.platform.deploymentTargetSetting] = version.deploymentTarget } + buildSettings += getBuildSettings(settings: target.settings, config: config) + // Prevent setting presets from overrwriting settings in target xcconfig files if let configPath = target.configFiles[config.name] { buildSettings = removeConfigFileSettings(from: buildSettings, configPath: configPath) @@ -64,8 +66,6 @@ extension Project { buildSettings = removeConfigFileSettings(from: buildSettings, configPath: configPath) } - buildSettings += getBuildSettings(settings: target.settings, config: config) - return buildSettings } diff --git a/Tests/Fixtures/settings_test.yml b/Tests/Fixtures/settings_test.yml index ae7cf20db..3d3b45ce9 100644 --- a/Tests/Fixtures/settings_test.yml +++ b/Tests/Fixtures/settings_test.yml @@ -71,10 +71,15 @@ targets: Target: type: application platform: iOS + configFiles: + # To verify build setting merge we need to duplicate setting in configFiles and settings + # BASE_SETTING: baseSetting is defined in base.xcconfig and for this target under settings:base: + config1: TestProject/Configs/base.xcconfig settings: groups: - preset7 base: + BASE_SETTING: baseSetting SETTING 2: value 2 configs: config1: