我试图在同一个XCode项目中拥有我的iPhone应用程序的2个版本.代码库几乎相同,我需要有不同的行为,我决定使用预处理器的条件和${TARGET_NAME}
标签.
我已经设置OTHER_CFLAGS
为包含" -DTARGET_NAME=${TARGET_NAME}
".
然后在我的代码中我试着做
#if TARGET_NAME == myApp NSLog(@"pro"); #elif TARGET_NAME == myAppLite NSLog(@"lite"); #endif
不幸的是我总是打印出"精简版",因为TARGET_NAME == myApp
它始终是真的:自TARGET_NAME
定义之后.我不能为我的生活弄清楚如何评估这个字符串比较.任何的想法?
提前致谢
您无法比较#if
块中的字符串.而是将定义添加到每个特定目标.例如,在完整版的目标,打开Info面板,然后生成选项卡,并添加类似FULL_VERSION
的GCC_PREPROCESSOR_DEFINITIONS
构建设置.然后,对于lite目标,输入类似的内容LITE_VERSION
.在您的代码中,您可以:
#ifdef FULL_VERSION NSLog(@"Full"); #else NSLog(@"Lite"); #endif