Adding a build configuration in Xcode

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


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

enter image description here


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>"