Можно ли установить символ для условной компиляции, настроив свойства в проекте Xcode?
Моя цель - создать символ, доступный для всех файлов, без необходимости использования импорта / включения, чтобы набор общих классов мог иметь особое поведение в некоторых проектах. Как следующие, но с моими собственными символами.
#if TARGET_IPHONE_SIMULATOR
...
#endif
objective-c
xcode
c-preprocessor
Стеф Тирион
источник
источник
Ответы:
Перейдите к настройкам Target или Project, щелкните значок шестеренки в левом нижнем углу и выберите «Добавить пользовательскую настройку». Имя нового параметра должно быть
GCC_PREPROCESSOR_DEFINITIONS
, и вы можете ввести свои определения в правом поле.Согласно комментариям Стефа, полный синтаксис:
Обратите внимание, что вам не нужно '=', если вы просто хотите # определить символ, а не задавать ему значение (для
#ifdef
операторов)источник
Вам не нужно создавать пользовательскую настройку. Встроенная настройка «Макросы препроцессора» работает нормально. альтернативный текст http://idisk.mac.com/cdespinosa/Public/Picture%204.png
Если у вас есть несколько целей или проектов, которые используют один и тот же файл префикса, используйте вместо этого макросы препроцессора, не используемые в предварительно скомпилированных заголовках, чтобы различия в определении макроса не вызывали ненужный дополнительный набор предварительно скомпилированных заголовков.
источник
В качестве дополнения, если вы используете эту технику для определения строк в своей цели, мне пришлось определять и использовать их следующим образом:
В настройках сборки -> Макросы препроцессора, и да, обратная косая черта важна в определении:
И в исходном коде:
источник
Вы можете использовать этот
*_Prefix.pch
файл для объявления макросов проекта. Этот файл обычно находится в вашей группе « Другие источники ».источник
Он находится в разделе «GCC 4.2 Preprocessing» (или просто введите «prepro» в поле поиска) ...
... однако, хоть убей, я не могу заставить его работать.
У меня есть стандартные конфигурации отладки и выпуска, и я хочу определить DEBUG = 1 в конфигурации отладки. Но после добавления его в качестве значения:
(в окне настроек)> Макросы препроцессора: DEBUG = 1
... никогда не печатает / не вызывает. Это сводит меня с ума...
источник
#if DEBUG
В ответ на комментарий Кевина Лэйти (см. Ответ cdespinosa) о том, что раздел предварительной обработки GCC не отображается в настройках сборки, сделайте активным SDK тот, который говорит (Базовый SDK) после него, и этот раздел появится. Вы можете сделать это, выбрав меню «Проект»> «Установить активную цель»> «XXX (базовый SDK)». В разных версиях XCode (базовый SDK) могут быть разные, например (настройка проекта или значение проекта по умолчанию).
После появления этого раздела вы можете добавить свои определения в макросы процессора, а не создавать пользовательские настройки.
источник
Для проекта Xcode 9.4.1 и C ++. Добавление
const char*
макросов препроцессора в сборки отладки и выпуска .Выберите свой проект
Выберите настройки сборки
Искать « Макросы препроцессора »
Открыть интерактивный список
Добавьте свои макросы и не забудьте избежать цитаты
Использовать в исходном коде как обычно
const char*
источник
Вы можете продублировать цель, которая имеет раздел предварительной обработки, переименовать ее в любое имя, а затем изменить значение макроса препроцессора.
источник