7

I want my XCode Objective-C project to be able to detect which configuration it is being built with. How can I achieve this?

1 Answer 1

14

You can have per-configuration macro definitions. Open up your project settings, select your configuration from the Configuration drop-down menu, and go to Preprocessor Macros. For Debug, I recommend defining the macro _DEBUG, and for release I recommend defining _RELEASE, as these are the typical ones which are used. These are passed on to the compiler as -D options, e.g. -D_DEBUG.

You can also put -D options directly into the Other C Flags setting.

Sign up to request clarification or add additional context in comments.

3 Comments

Can I define them under "User-Defined" because I don't see "Preprocessor Macros" unless you mean "Info.plist other preprocessor flags"?
It seems that if I selected "Base SDK" the options would then appear.
@Adam - _DEBUG and _RELEASE are OK, but non-standard. Posix only observes NDEBUG, so the Release configuration should definitely include it. To cover all the bases (including interop'ing with other libraries, such as SQLite and SQLCipher), and including your macros: Debug configurations should have the following preprocessor macros: _DEBUG, DEBUG=1; and Release configuration should have _RELEASE, NDEBUG=1, NS_BLOCK_ASSERTIONS=1 preprocessor macros.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.