Что #defines настраиваются XCode при компиляции для iPhone

Я пишу некоторый полупереносной код и хочу смочь обнаружить, когда я компилирую для iPhone. Таким образом, я хочу что-то как #ifdef IPHONE_SDK....

По-видимому, XCode определяет что-то, но я ничего не вижу под свойствами проекта, и Google не является большим количеством справки.

64
задан Josh Caswell 19 October 2011 в 00:56
поделиться

2 ответа

Это находится в документах SDK при "Компиляции исходного кода условно"

, соответствующими определениями является TARGET_OS_IPHONE (и он удержал от использования TARGET_IPHONE_SIMULATOR), которые определяются в/usr/include/TargetConditionals.h в платформе iOS. На более ранних версиях набора инструментальных средств необходимо было записать:

#include "TargetConditionals.h"

, но это больше не необходимо на токе (xCode 6/iOS8) набор инструментальных средств.

Так, например, если Вы хотите только скомпилировать блок кода, если Вы создаете для устройства, тогда необходимо сделать

#if !(TARGET_OS_SIMULATOR)
...
#endif
113
ответ дан Jeremy Huddleston Sequoia 24 November 2019 в 15:48
поделиться

Для рассмотрения всех определенных макросов добавьте это к "Другим Флагам C" конфигурации сборки:

-g3 -save-temps -dD

Вы получите некоторые ошибки сборки, но компилятор выведет все определение в .mi файлы в корневом каталоге Вашего проекта. Можно использовать grep для рассмотрения их, например:

grep define main.mi 

, Когда Вы будете сделаны, не забывайте удалять эти опции из установки сборки.

24
ответ дан lajos 24 November 2019 в 15:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: