This will create xcconfig files under Configuration dir. Configurations are removed from buildSettings section of pbxproj.
Generated xcconfigs are added to your project automatically. ✏️
Available Options
Options:
--no-trim-duplicates [default: false] - Don't extract duplicated lines to common xcconfig files, simply map each buildSettings to one file.
--no-edit-pbxproj [default: false] - Do not modify pbxproj at all.
--include-existing [default: true] - `#include` already configured xcconfigs.
--no-set-configurations [default: false] - Do not set xcconfig(baseConfigurationReference) in pbxproj. Ignored if `--no-edit-pbxproj` is true.
Build Setting Validation
⚠️ Waring ⚠️
xcconfig-extractor is a refactoring tool. It shouldn’t affect your App’s actual “Build Setting”.
Recommended way to check Build Settings is to use xcodebuild command. Make sure outputs does not change between before and after.
$ xcodebuild -showBuildSettings -configuration Release > before
$ # apply xcconfig-extractor
$ xcodebuild -showBuildSettings -configuration Release > after
$ diff before after # should prints nothing!
If outputs differ, fix it manually e.g. simply by adding missing value to target’s xcconfig.
If you use agvtool for automatic versioning, it won’t work after applying xcconfig-extractor. agvtool updates versions correctly iff INFOPLIST_FILE is configured in Xcode’s buildSettings section.
So make sure you either
Restore INFOPLIST_FILE in Xcode’s buildSettings section.
or
Quit using agvtool and fallback to other tools like /usr/libexec/PlistBuddy to update Info.plist.
xcconfig-extractor
Refactor buildSettings into xcconfigs.
Requirements
Usage
This will create xcconfig files under
Configuration
dir. Configurations are removed frombuildSettings
section of pbxproj.Generated xcconfigs are added to your project automatically. ✏️
Available Options
Build Setting Validation
⚠️ Waring ⚠️
xcconfig-extractor
is a refactoring tool. It shouldn’t affect your App’s actual “Build Setting”.Recommended way to check Build Settings is to use
xcodebuild
command. Make sure outputs does not change between before and after.If outputs differ, fix it manually e.g. simply by adding missing value to target’s xcconfig.
xcconfig does not allow any
$(inherited)
from#include
ing xcconfigs. (See: https://github.com/toshi0383/xcconfig-extractor/pull/8#issuecomment-298234943) So if you have any existing xcconfig configured on your project, it might cause problems. This article is helpful to understand how inheritance works.agvtool compatibility
⚠️ Waring ⚠️
If you use
agvtool
for automatic versioning, it won’t work after applyingxcconfig-extractor
.agvtool
updates versions correctly iffINFOPLIST_FILE
is configured in Xcode’s buildSettings section.So make sure you either
INFOPLIST_FILE
in Xcode’s buildSettings section.or
agvtool
and fallback to other tools like/usr/libexec/PlistBuddy
to update Info.plist.e.g.
Install
Mint
Build from source
swift build -c release
..build/release/xcconfig-extractor
.Donate
If you think it’s a useful tool, consider donation to maintain project.
License
MIT