Skip to main content
On this page

Project Settings Editor

No need to open project.pbxproj. Change identity, deployment, signing and version on the General page, and view and edit Build Settings by Basic, Customized, All and by level, with resolved values shown live.

The General page of the Project Settings Editor

Open the editor

FromActionOpens to
Command PaletteKXBuild: Project Settings…Build Settings
ExplorerRight-click a .xcodeproj or .xcworkspace and choose KXBuild: Project Settings…, or double-click project.pbxprojBuild Settings
KXBuild viewRight-click a project row and choose KXBuild: Edit Project Settings, or a target row and choose KXBuild: Edit Target SettingsBuild Settings for a project, General for a target
Back from text modeKXBuild: Open with Project Settings Editor in the pbxproj editor's title bar—

From a .xcworkspace, you first pick one of its .xcodeproj files. In the left column, PROJECT holds the project-level settings and TARGETS lists one entry per target.

General page

Each field maps to a build setting. Changing a field here changes that row in Build Settings.

SectionFieldBuild setting
IdentityBundle Display NameINFOPLIST_KEY_CFBundleDisplayName
Bundle IdentifierPRODUCT_BUNDLE_IDENTIFIER
Product NamePRODUCT_NAME
Marketing VersionMARKETING_VERSION
Current Project VersionCURRENT_PROJECT_VERSION
Deployment InfoiOS Deployment TargetIPHONEOS_DEPLOYMENT_TARGET
Targeted Device FamiliesTARGETED_DEVICE_FAMILY
Supported PlatformsSUPPORTED_PLATFORMS
Supported Interface Orientations (iPhone / iPad)INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone / …_iPad
Launch Screen Storyboard / Main StoryboardINFOPLIST_KEY_UILaunchStoryboardName / INFOPLIST_KEY_UIMainStoryboardFile
SigningCode Signing Style, Automatic or ManualCODE_SIGN_STYLE
Development TeamDEVELOPMENT_TEAM
Code Signing IdentityCODE_SIGN_IDENTITY
Provisioning ProfilePROVISIONING_PROFILE_SPECIFIER
Code Signing EntitlementsCODE_SIGN_ENTITLEMENTS
BuildSwift Language VersionSWIFT_VERSION
Info.plist FileINFOPLIST_FILE
Generate Info.plist FileGENERATE_INFOPLIST_FILE
App Icon Set NameASSETCATALOG_COMPILER_APPICON_NAME

For how signing settings work with the keychain folder, see Certificates and signing. For bumping the version before submission, see Release and App Store submission.

Build Settings page

The Levels view of the Build Settings page
ControlWhat it does
Basic / Customized / AllShow common settings, only the settings changed at this level, or everything. Basic is the default.
Combined / LevelsCombined shows resolved values. Levels splits them into five columns, Target, Target xcconfig, Project, Project xcconfig and Default, so you can see which level wins.
Search boxFilters by setting name or display title
Show setting names next to titlesShows IPHONEOS_DEPLOYMENT_TARGET next to titles like "iOS Deployment Target"
Show one row per configuration (set Debug and Release separately)Settings whose Debug and Release values differ get two rows. Identical ones stay on one row.
<Multiple values> / (inherited)The first means the configurations have different values. The second means this level doesn't define the setting and inherits it from below.
Quick HelpThe panel at the bottom shows the selected setting's type, allowed values, default and description

Right-click a value cell for Add User-Defined Setting, Delete Setting (removes this level's definition so the value is inherited again), Copy Setting Name and Copy Value. List values take one item per line. Use $(inherited) to keep the values from lower levels.

Save

As you edit, the Combined column and the General page show the resolved values right away. Ctrl+Z undoes. Ctrl+S writes project.pbxproj, touching only the lines that changed. If another tool changes the file while you have unsaved edits, you can reload from disk or keep your changes.

Limitations

The editor only changes build settings and the Info.plist keys they map to. Edit a target's file list, build phases and dependencies in text mode. There's no visual editor for storyboards and xibs, so the General page only takes their file names. If the toolchain and extension versions don't match, the editor is read-only and asks you to update. Update and reopen it.

Next steps