Xcode 4: определить макрос препроцессора в зависимой цели - PullRequest
6 голосов
/ 15 июля 2011

У меня есть приложение с именем MyApp , которое связано со статической библиотекой MyLibrary Я добавил проект MyLibrary в Xcode и добавил MyLibrary target to MyApp Целевые зависимости.Все это прекрасно работает, я могу установить точки останова, и я очень счастлив.

Дело в том, что я хочу условный журнал в библиотеке:

#ifdef DEBUG
#   define  MYDebug(msg, ...) NSLog(@"\nDEBUG -> %@ \n(%s:%d)",[NSString stringWithFormat:msg, ## __VA_ARGS__], __PRETTY_FUNCTION__,__LINE__);
#else
#   define MYDebug(msg, ...)
#endif

Итак, у меня есть две сборкиКонфигурация для моей библиотеки: - Debug имеет "DEBUG = 1" в настройках сборки цели в "макросах препроцессора" - Prod не имеет ничего

И MyLibrary target настроен на сборку с конфигурацией сборки Debug.

Это прекрасно работает, если я собираю статическую библиотеку (.a) и включаю ее в проект.Но если он построен по целевой зависимости, кажется, что DEBUG не определен (MYDebug ничего не регистрирует).

Я также пытался установить DEBUG = 1 в MyApp 'Настройки сборки, но это не работает.

Есть что-то, что я пропустил, или другой способ сделать это?

1 Ответ

8 голосов
/ 08 сентября 2011

Это должно быть просто «DEBUG» вместо «DEBUG = 1». Кроме того, чтобы использовать макрос, который требует назначения объекта (NSString и т. Д.), Вам необходимо экранировать большинство символов, таких как @ и " и т. Д.

Вот скриншот моего рабочего проекта из xCode 4.1:

enter image description here

...