Как мне скомпилировать приложение для iPad на устройстве с помощью LLVM GCC?

У меня есть приложение, настроенное для использования LLVM GCC 4.2 в Target> Build Settings в разделе Compiler Version, и оно работало для симулятора.

Когда я переключил свою «схему» на iPad, она выдавала те же предупреждения, что и при использовании GCC, поэтому я предполагаю, что сейчас она компилируется под GCC. Но для цели «Версия компилятора C / C ++» по-прежнему установлено значение LLVM GCC 4.2 (кроме iOS по умолчанию, где это GCC 4.2, и я не могу изменить).

Почему он больше не компилируется с LLVM GCC и как его изменить, чтобы он работал под iPad?

Изменить: ошибка, которую я получал, связана с доступом к переменной экземпляра суперкласса. GCC выдает ошибку, если вы не записали его как [self iVarName], в то время как LLVM GCC компилируется нормально, если вы просто используете iVarName.


person AndrewKS    schedule 30.03.2011    source источник
comment
Вы очистили эту мишень? А можете ли вы привести пример ошибки, которую вы пытаетесь избежать таким образом?   -  person Firoze Lafeer    schedule 03.04.2011
comment
Я действительно считаю, что очистил цель. Ошибка связана с ссылкой на переменную экземпляра суперкласса. Добавил ошибку к моему вопросу.   -  person AndrewKS    schedule 03.04.2011
comment
Вы случайно не запускаете 32-битный симулятор? Я предполагаю, что вы используете LLVM / GCC на iPad, но помните, что iPad использует современную среду выполнения. Похоже, ваш код делает что-то, что недопустимо в современной среде выполнения. Возможно, синтезировать свойство с использованием суперкласса ivar?   -  person Firoze Lafeer    schedule 03.04.2011
comment
Я использовал его точно так же, как этот вопрос, и также решил, что он делает то же самое: stackoverflow.com/questions/3957288/ Если бы iPad использовал LLVM / GCC, я полагаю, что он не получить эту ошибку - но, к сожалению, она есть. Я не уверен, что использую 32-битный симулятор. Надо будет проверить в понедельник, когда вернусь на работу. IPad 32-разрядный или 64-разрядный?   -  person AndrewKS    schedule 03.04.2011
comment
IPad 32-разрядный, однако он использует современную среду выполнения, такую ​​как 64-разрядные Mac. Мое предложение - опубликовать фактический код и ошибку, которую вы получаете, и кто-то может решить эту основную проблему. Если, например, вы пытаетесь @ синтезировать свойство в подклассе, который пытается обернуть суперкласс ivar, вы не можете сделать это непосредственно в современной среде выполнения.   -  person Firoze Lafeer    schedule 03.04.2011
comment
Кстати, не обращайте внимания на то, что я сказал о 32-битной сим-карте. Я думал о симуляторе до лета 2010 года. Тем не менее, я думаю, вам следует взглянуть на основную ошибку здесь. Я думаю, предположение, что у вас просто неправильный компилятор, вероятно, неверно.   -  person Firoze Lafeer    schedule 04.04.2011


Ответы (1)


LLVM GCC - это препроцессор LLVM с компилятором GCC, поэтому вы должны увидеть те же сообщения об ошибках (и еще несколько в IDE благодаря LLVM). Вы можете попробовать LLVM Compiler 2.0, но на данный момент в нем есть несколько ошибок. Чтобы установить компилятор, выберите проект в левом верхнем углу, коснитесь вкладки «Параметры сборки» и смените компилятор.

person Hiltmon    schedule 30.03.2011
comment
LLVM GCC - это препроцессор LLVM с компилятором GCC, поэтому вы должны увидеть те же сообщения об ошибках (и еще несколько в IDE благодаря LLVM). Я не ... на самом деле LLVM GCC не показывает ошибок, которые делает GCC. И когда я использую устройство iPad, он выдает ошибки, которые GCC сделал, а LLVM GCC не сделал, хотя я установил компилятор на LLVM GCC. Прочтите, пожалуйста, вопрос. - person AndrewKS; 31.03.2011
comment
это наоборот. LLVM GCC 4.2 на самом деле является внешним интерфейсом GCC, сопряженным с генератором внутреннего кода LLVM. - person Firoze Lafeer; 03.04.2011