148
votes

I'd like to add a new build configuration in Xcode 5, "QA", to the other three we currently have (Debug, Distribution, Release). However, when I click "Editor > Add Configuration", everything is grayed out. I'm not very familiar with Xcode in the first place, so I'm not sure how to go about doing this.

Is there a reason it's grayed out? Is this this process to add a build configuration? Thanks.

3
Here it is an article may be it will help you guys. Here you will see the sample code + in details how you can set your staging and release web urls, keys and much more using build configurations. I saw various resources but there was not a sample of full code. Thats why i have added the full sample code with detail description of how you can generate set build configurations using plist and automated process of build configurations, while creating archive for release and testing mode. github.com/ourangzeb/Build-Configuration-for-IOS - OurangZeb Khan

3 Answers

277
votes

I ran into this same problem and figured it out. Here is a screenshot of the problem. I want to duplicate my "Release" configuration, but the option to do so is disabled. Why?

enter image description here

The answer is hiding behind this little button here (circled in red)...

enter image description here

This menu will open to reveal that you currently have a build target selected. Build targets don't have their own configurations.

Configurations are project-wide. If you select the project file, the menu will work, as shown here.

You also have to make sure that the 'Info' tab is selected, the options are still greyed out if you are on the 'Build Settings' page

enter image description here

19
votes

For Xcode 11 + , you can add your custom configuration here:

enter image description here

2
votes

Build Configuration and Build Configuration File(.xcconfig)

It allows you to manage Build Settings. It is actually what you see when reviewing Build Settings and it's mirrors(like Signing in Signing & Capabilities)

enter image description here

Build Configuration(e.g. Release/Debug) -> Build Configuration File(.xcconfig) or some default config file

[Xcode structure]

Build Configuration

Actually Debug/Release Build Configurations are created by default

Create Build Configuration

You are able to create a new Build Configuration via duplicating an existing(Debug/Release) in Configurations

Editor -> Add Configuration -> Duplicate <configuration_name> Configuration -> Click plus button under configuration list
//Set a name - Experiments for example

enter image description here

Select Build Configuration

Scheme -> Info -> Build Configuration

Build Configuration File(.xcconfig)

Much more powerful feature is build configuration file which you can assign for your configuration

File -> New -> File... -> Configuration Settings File
//Do not include it to any target

Project -> Info -> Configurations -> Build Configuration -> Target -> Build Configuration File

enter image description here

Please note that you are able to set Build Configuration File for Project and for Target. Depends on it Resolved variable will be set, also $(inherited)[About] will be different

For example add name into Build Configuration File

PRODUCT_NAME = THE BEST NAME

The result you can find on Build Settings

enter image description here CocoaPods and Build Configuration File

project '<project_name>', '<scheme_name_1>' => :<build_congiguration_file_name_1>
//For example
project 'MyProject', 'debug' => :conf1, 'release' => :conf2

Build Configuration File(.xcconfig). You can use next syntax to add or override the parent parameters

#include "<path_to_xcconfig>"