How do I check the TARGET_NAME of my iPhone app on XCode?

iphone, preprocessor, xcode

Solution

You can't compare strings like that in an `#if` block. Instead, add the defines to each specific target. For instance, on the full version's target, open the Info panel and go to the build tab and add something like `FULL_VERSION` to the `GCC_PREPROCESSOR_DEFINITIONS` build setting. Then, for the lite target, enter something like `LITE_VERSION`. In your code, you can do:

#ifdef FULL_VERSION
NSLog(@"Full");
#else
NSLog(@"Lite");
#endif

Problem

I'm trying to have 2 version of my iPhone application within the same XCode project. The codebase it's almost the same and where I need to have different behaviours I've decided to use preprocessor's conditionals and the `${TARGET_NAME}` tag. I've set the `OTHER_CFLAGS` to contain "`-DTARGET_NAME=${TARGET_NAME}`". Then in my code I tried to do ``` #if TARGET_NAME == myApp NSLog(@"pro"); #elif TARGET_NAME == myAppLite NSLog(@"lite"); #endif ``` Unfortunately I always get "lite" printed out since `TARGET_NAME == myApp` it's always true: since `TARGET_NAME` is defined. I cannot for the life of me figure out how to evaluate this string comparison. Any idea? thanks in advance

Original source