如何为我的两个不同目标指定#define 命令

the*_*ncs 5 objective-c target ios c-preprocessor

我有一个项目,我将其拆分为两个目标。最初的单目标项目使用了许多定义命令,但是我现在需要这些值根据我正在构建的目标而有所不同。

这样做的正确方法是什么?我应该使用在 AppDelegate 上声明的 NStrings 吗?或者我可以在设置#defines 时使用#if 语句吗?

任何帮助,非常感谢。

jus*_*tin 3

一种方法是这样的:

#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
Run Code Online (Sandbox Code Playgroud)

然后将MON_TARGET_A或添加MON_TARGET_B到目标的预处理器设置中。

通常,您将使用GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPSand not GCC_PREPROCESSOR_DEFINITIONS,因为后者可以阻止共享 PCH 标头。

要添加此内容,请转到:

  • 项目导航器 -> 项目 -> 目标 -> 构建设置

然后放入GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS搜索字段并将其值设置为:MON_TARGET_A $(inherited)