Как определить макросы препроцессора в Xcode 4?

У меня есть две цели, настроенные для моего приложения (облегченная версия и профессиональная версия), и я хочу интегрировать некоторые тонкие различия в код для каждой из них (например, профессиональная версия не будет отображать баннеры iAd).

Я оглядывался и вижу, что самый простой способ сделать это — использовать макросы препроцессора. Проблема, с которой я столкнулся, заключается в том, как настроить их в Xcode 4. Я хочу настроить макрос с именем «PRO_VERSION» в одной цели и «LITE_VERSION» в другой.

Ниже приведен пример того, как я собираюсь их использовать:

#ifdef PRO_VERSION
    // Hide ad banners
#else
    // Show ad banners
#endif

person Community    schedule 21.10.2011    source источник
comment
Проверьте здесь: stackoverflow.com/questions/5272296/   -  person Carter    schedule 21.10.2011
comment
Это немного отличается от того, что мне нужно - спасибо.   -  person    schedule 21.10.2011


Ответы (2)


Параметр сборки, который необходимо изменить, называется «Макросы препроцессора», и его можно найти на вкладке «Параметры сборки» панели «Параметры проекта» (используйте поле поиска, чтобы найти его). Выберите каждую цель по очереди в левой части панели «Настройки проекта», затем измените параметр «Макросы препроцессора».

Параметр указывается в виде разделенного пробелами списка макросов препроцессора в форме «foo» или «foo=bar».

person Robin Summerhill    schedule 21.10.2011
comment
Спасибо за вашу помощь. Нужно ли мне добавлять их для отладки, выпуска или и того, и другого? - person ; 21.10.2011
comment
Оба. Вам нужно, чтобы версии pro и lite правильно компилировались в конфигурациях отладки и выпуска. - person Robin Summerhill; 21.10.2011
comment
Просто для ясности. Вы должны выбрать цель «Pro», а затем добавить «PRO_VERSION» в настройку макросов препроцессора как для отладки, так и для выпуска. Для цели «Lite» ничего делать не нужно. - person Robin Summerhill; 21.10.2011
comment
Есть ли способ определить что-то для всех конфигураций? Кажется совершенно неправильным дублировать это для отладки и выпуска; отладка и выпуск должны наследовать от чего-то и должны определять только те вещи, которые являются изменениями из общего набора. - person James Moore; 07.12.2012

В данный момент я не на своем Mac, поэтому я не могу дать полные пошаговые инструкции, но я считаю, что это должно быть точным, если не таким подробным, как в противном случае. Создайте новую цель сборки. Перейдите к экрану конфигурации для этой новой цели. Там должна быть вкладка вдоль строк параметров компиляции. В этой вкладке должна быть строка для других флагов компилятора. Вставьте туда -DPRO_VERSION.

person Kevin    schedule 21.10.2011