John Daub

Adopting Configuration Settings Files in Xcode

John Daub | Feb 05, 2019

Manage Multiple Build Settings By Harnessing the Power of xcconfig Files

Modern app development continues to grow in complexity. We have many targets in our Xcode project - the app, extensions, frameworks, unit tests – and each has their own myriad of build settings. As project complexity grows, it becomes increasingly difficult to manage the target build settings, especially since we want to keep those settings synchronized and consistent.

Xcode supports Configuration Settings Files, also known as build configuration files, or sometimes simply “xcconfig” files -- which is their filename extension.

A Configuration Settings File is a plain text file that defines build settings for a particular build configuration of a project or target. This type of file can be edited outside of Xcode and integrates well with source control systems. It also gives us the power to tame the complexity beast of project and target build settings.

In this screencast, we will explore how to use Xcode’s Configuration Settings Files - or xcconfig files - and improve our ability to tame the complexity of managing project settings.

Questions we'll answer in this screencast:

- What is an xcconfig file?
- What is a build configuration file?
- What is an Xcode configuration settings file?
- How can I manage my project build settings?
- How can I manage my target build settings?
- Is there an easier way to work with (manage) Xcode project/target build settings?

Basic knowledge or experience building iOS applications is recommended.

For the More Curious...

Add a Build Configuration (xcconfig) File
Configuration Settings File (xcconfig) Format Reference
The Unofficial Guide to xcconfig Files
BNR Guide to iOS
BNR Guide to Swift
iOS & Swift Courses

Subscribers Only

Transcripts are for subscribers. Create an account today to access our collection of screencasts, skill packs, and more.

Subscribers Only

Project files are only available for subscribers. Create an account today to access our collection of screencasts, skill packs, and more.

Need Help?

If you get stuck, try starting a discussion with Big Nerd Ranch experts in the community tab.

Related Screencasts

Explore other screencasts related to this topic.

Xcode Configurations vs. Schemes

10 minutes

Targets and configurations and schemes; Oh my! Confused by these Xcode concepts? Curious how using multiple build configurations coupled with schemes can avoid the multiple-target mess? If you’re wondering what this all means and how it can make your developer life better, this video is for you.

Swift Assertions

9 minutes

In this screencast, we’ll learn how to use Swift’s assertion function to code defensively. By the end of this video, you’ll be able to use the assertion functions to help you write stronger, more robust code.

Xcode Inline Documentation

10 minutes

In this screencast, you'll earn how to document your Swift code using Xcode’s Markup support, and Jazzy to create an informative API.

Protocol Oriented Dependency Injection

8 minutes

Tight coupling between view controllers in your application can lead to difficult maintenance as you add and remove features. This video will explore how using Protocols can make our Dependency Injection more loosely coupled. This improves the flexibility of the code and makes our application easier to change.

Finding and Fixing Memory Issues

7 minutes

Incorrectly managing memory in our applications can result in hard to find bugs and possible crashes. In this video, we will explore the Memory Graph debugging tool in Xcode and how you can use it to find and fix strong reference cycles in closures.

Using Container Views to Manage Complex Layouts

7 minutes

When you have a complex view controller view, sometimes it is helpful to break up the view into manageable chunks. In this video we will show how you can use container views to simplify the construction of certain layouts. After this video you will know when and how to use these container views in your applications.