Refactor buildSettings into xcconfigs.
- Xcode10+ is officially supported, but should work against older ones too.
$ xcconfig-extractor /path/to/Your.xcodeproj ConfigurationsThis will create xcconfig files under Configuration dir. Configurations are removed from buildSettings section of pbxproj.
Generated xcconfigs are added to your project automatically. ✏️
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.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.
xcconfig does not allow any $(inherited) from #includeing xcconfigs. (See: #8 (comment)) So if you have any existing xcconfig configured on your project, it might cause problems.
This article is helpful to understand how inheritance works.
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_FILEin Xcode's buildSettings section.
or
- Quit using
agvtooland fallback to other tools like/usr/libexec/PlistBuddyto update Info.plist.
e.g.
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $(git describe --tags --abbrev=0)" App/Info.plist
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BITRISE_BUILD_NUMBER}-${BITRISE_GIT_BRANCH}" App/Info.plistmint install toshi0383/xcconfig-extractor
- Clone this repo and run
swift build -c release. - Executable will be created at
.build/release/xcconfig-extractor.
If you think it's a useful tool, consider donation to maintain project.
MIT