Xcode: How to set debug environment with multiple xcconfig files?
xcconfig, xcode
Solution
The way we have tackled this in the past is to have each layer compose a subset of the definitions, then bring them all together at the leaf-level xcconfig.
In `shared.xcconfig`:
GCC_PREPROCESSOR_DEFINITIONS_SHARED = qFoo qBar qBaz
In `debug.xcconfig`:
GCC_PREPROCESSOR_DEFINITIONS_DEBUG = qDebug
GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_SHARED) $(GCC_PREPROCESSOR_DEFINITIONS_DEBUG)
(The advantage to making the subset variables verbose is that they are lexicographically similar to the value they are used to compose, making them easier to find in the config file.)
Problem
I'm using Xcode 3.2 with `xcconfig` files. The files are organized by target. For example, I have a `debug.xcconfig` file and a `release.xcconfig` one. Both uses common settings, so I added a `shared.xcconfig` file which is included by both. The `shared.xcconfig` file looks like this: ``` GCC_C_LANGUAGE_STANDARD = c99 GCC_WARN_ABOUT_RETURN_TYPE = YES GCC_WARN_UNUSED_VARIABLE = YES GCC_PREPROCESSOR_DEFINITIONS = SOME_COMMON_DEFINITIONS ``` The `debug.xcconfig` file looks like this: ``` #include "Shared.xcconfig" GCC_OPTIMIZATION_LEVEL = 0 ``` Now, I would like to add a `DEBUG` preprocessor definition in the `debug.xcconfig` file. As shown in this question, the following method is supposed to work: ``` GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG" ``` This doesn't work in Xcode 3.2. The Xcode documentation also explicitly mention that modifying variables is not possible, you can only overwrite them. How would you guys solve this problem?