Xcode LLVM 5.1 clang error

Мне не повезло последние несколько дней с момента выхода Xcode 5.1.

Я продолжаю получать эту ошибку в старом проекте, поддерживающем iOS 6.0:

ERROR:

clang: error: unknown argument: '-fno-obj-arc' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1

В интернете мало сообщений об этом, и некоторые предложения, похоже, состоят в изменении вашего CFLAGS, но я не знаю, как это сделать в Xcode.

Apple предлагает это из своих документов:

Компилятор

По версии компилятора Apple LLVM версии 5.1 (clang-502) и более поздних версий уровень оптимизации -O4 больше не подразумевает оптимизацию времени соединения (LTO). Чтобы строить с помощью LTO, явно используйте параметр -flto дополнительно на флаг уровня оптимизации. (15633276) Компилятор Apple LLVM в Xcode 5.1 рассматривает непризнанные параметры командной строки как ошибки. Эта проблема была обнаружена при создании как внутренних расширений Python, так и Ruby Gems, где некоторые недопустимые параметры компилятора в настоящее время указано. Проекты, использующие недопустимые параметры компилятора, должны быть для удаления этих параметров. Чтобы облегчить этот переход, компилятор временно примет возможность понизить ошибку до предупреждение:

-Wno-error=unused-command-line-argument-hard-error-in-future

Примечание. Этот вариант не будет поддерживаться в будущем. К обходу эта проблема, установите переменную среды ARCHFLAGS для понижения ошибка к предупреждению. Например, вы можете установить родной Python расширение с помощью

$ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future easy_install ExtensionName

Аналогичным образом вы можете установить Ruby Gem с помощью:

$ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName 16214764 updated

Как мне получить это обходное решение? Очевидно, Apple испортилась, потому что она должна представлять только предупреждение, а не ошибку в соответствии с их документами.

Любая помощь будет принята с благодарностью. Я не могу создать свое приложение, пока эта проблема не будет исправлена.

Ответ 1

Нет такой вещи, как -fno-obj-arc. Это никогда не работало правильно; вы просто не видели предупреждений. Правильная форма -fno-objc-arc.

EDIT (добавленная информация из моих комментариев ниже): Это не ошибка clang. Это ошибка в проекте; clang просто сообщает об этом. Сам проект ошибочно содержит аргумент -fno-obj-arc, возможно, на этапе сборки источников компиляции объекта (как описано здесь: Как отключить ARC для одного файла в проекте?). Легко вводить настройку неправильно; то, что изменилось в Xcode 5.1, - это просто то, что clang теперь вызывает проблему к вашему вниманию. Таким образом, как я уже говорил, это никогда не срабатывало правильно; вы предположительно намеревались отключить ARC для определенных файлов, но вы не сделали этого, поскольку аргумент build был введен неправильно.

Ответ 3

Я придумал небольшую помощь от мата.
Я пытался выяснить, где изменить -fno-obj-arc, и NO ONE ответил на этот вопрос. Я нашел эту ссылку полезной... http://blog.evanmulawski.com/?p=36

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

Спасибо за попытку ребята.

Ответ 4

export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future"

Ответ 5

Вам нужно изменить -fno-obj-arc на -fno-objc-arc. Выберите проект → цели → фазы сборки.. изображение > enter image description here