How do I define preprocessor macros in Xcode 4?
Asked Answered
M

2

23

I have two targets set up for my app (a lite version and a pro version) and I want to integrate some subtle differences in the code for each of them (e.g. the pro version will not show any iAd banners).

I have been looking around and I see the easiest way to do this is through the use of preprocessor macros. The issue I'm facing is how to set them up in Xcode 4. I want to set up a macro called 'PRO_VERSION' in one target & 'LITE_VERSION' in the other.

Below is an example of how I intend to use them:

#ifdef PRO_VERSION
    // Hide ad banners
#else
    // Show ad banners
#endif
Meng answered 21/10, 2011 at 14:49 Comment(2)
Check here: #5272796Unpin
This is subtly different to what I'm after - Thanks though.Meng
A
40

The build setting you need to change is called 'Preprocessor Macros' and it can be found in the 'Build Settings' tab of the Project Settings pane (use the search box to find it). Select each target in turn in the left-hand side of the Project Settings pane then modify the Preprocessor Macros setting.

The setting is specified as a space-separated list of preprocessor macros in the form 'foo' or 'foo=bar'.

Alina answered 21/10, 2011 at 14:59 Comment(4)
Thanks for your help. Do I need to add them to debug, release or both?Meng
Both. You need your pro and lite versions to compile correctly in debug and release configurations.Alina
Just to clarify. You would select your 'Pro' target and then add 'PRO_VERSION' to the Preprocessor Macros setting for both debug and release. You don't need to do anything for the 'Lite' target.Alina
Is there a way to define something for all configurations? It seems completely wrong to have to duplicate this for debug and release; debug and release should inherit from something, and should only define things that are changes from the shared set.Krigsman
W
3

I'm not on my mac at the moment, so I can't give full step-by-step directions, but I believe this should be accurate, if not as detailed as I would otherwise be. Create a new build target. Go to the configuration screen for this new target. There should be a tab along the lines of compilation options. In this tab there should be a row for other compiler flags. In there, put -DPRO_VERSION.

Weimer answered 21/10, 2011 at 14:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.