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 был введен неправильно.
Ответ 2
Обновление для xcode теперь выдает неизвестные флаги компилятора как жесткие ошибки, а не предупреждения. Обнаружено, что это полезно:
https://langui.sh/2014/03/10/wunused-command-line-argument-hard-error-in-future-is-a-harsh-mistress/
Ответ 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]()