Как указать команды #define для двух разных целей - PullRequest
4 голосов
/ 07 февраля 2012

У меня есть проект, который я разделяю на две цели. В исходном проекте с одной целью используется несколько команд определения, однако мне нужно, чтобы эти значения теперь отличались в зависимости от цели, которую я создаю.

Какой правильный способ сделать это? Должен ли я использовать NStrings, объявленные в AppDelegate? Или я могу использовать оператор #if при настройке #defines?

Любая помощь, высоко ценится.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

Один из подходов будет выглядеть так:

#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)

0 голосов
/ 07 февраля 2012

Вы можете добавить дополнительные макросы препроцессора в настройках вашей цели (Preprocessing-> Macro Preprocessor Macros) и использовать # ifdef.

Это самый гибкий подход.

...