如何为我的两个不同目标指定#define命令
我有一个项目,我分成两个目标。 原始的单目标项目使用了许多定义命令,但是我现在需要这些值,这取决于我正在构建的目标。
这样做的正确方法是什么? 我应该使用在AppDelegate上声明的NStrings吗? 或者我可以在设置#defines时使用#if语句吗?
任何帮助,非常感谢。
一种方法是这样的:
#if defined(MON_TARGET_A) #define MON_TARGET_NAME "App A" #elif defined(MON_TARGET_B) #define MON_TARGET_NAME "App B" #else #error "which target are you building?" #endif
然后将MON_TARGET_A
或MON_TARGET_B
添加到目标的预处理器设置中。
通常,您将使用GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS
而不是GCC_PREPROCESSOR_DEFINITIONS
因为后者可以阻止共享PCH标头。
要添加此内容,请转到:
- 项目导航器 – >项目 – >目标 – >构建设置
然后将GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS
放入搜索字段并将其值设置为: MON_TARGET_A $(inherited)
您可以在目标设置(预处理 – >预处理器宏)中添加其他预处理器宏并使用#ifdef。
这是最灵活的方法。