web-dev-qa-db-ja.com

xcode LLVM 5.1 clangエラー

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)Xcode 5.1のApple LLVMコンパイラは、認識されないコマンドラインオプションをエラーとして扱います。この問題は、両方の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はめちゃくちゃになっています。それは、彼らの文書によると、警告ではなくエラーを表示するだけであるべきだからです。

どんな助けでも大歓迎です。この問題が修正されるまで、アプリをビルドできません。

10
Airtower

-fno-obj-arcのようなものはありません。これneverは正しく機能していました。警告は表示されませんでした。正しい形式は-fno-objc-arcです。

編集(下の私のコメントから引用した追加情報):これはclangエラーではありません。これはプロジェクトのエラーです。 clangは単にそれを報告しています。プロジェクト自体に誤って-fno-obj-arc引数が含まれています。これはおそらくターゲットのソースのビルドフェーズにあります(ここで説明しているように プロジェクト内の単一ファイルのARCを無効にするにはどうすればよいですか? )。設定を間違って入力するのは簡単です。 Xcode 5.1で変更されたのは、clangが問題に注意を向けているということだけです。したがって、前に述べたように、これはneverは正しく機能していませんでした。おそらく特定のファイルのARCをオフにするつもりでしたが、ビルド引数が誤って入力されたため、オフにできませんでした。

12
matt

Xcodeを更新すると、不明なコンパイラフラグが警告ではなくハードエラーとしてスローされるようになりました。これは役に立ちました:

https://langui.sh/2014/03/10/wunused-command-line-argument-hard-error-in-future-is-a-harsh-mistress/

6
daroo
export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future"
2
msc

マットの助けを借りて私は考え出した。
-fno-obj-arcを変更する場所を見つけようとしていましたが、誰もその質問に答えませんでした。このリンクが役に立ったと思います... http://blog.evanmulawski.com/?p=36

ビルドフェーズを選択してソースをコンパイルしたら、プロジェクト内のファイルの横を見て、ビルドフラグを変更できます。

挑戦してくれてありがとう。

2
Airtower

-fno-obj-arcを-fno-objc-arcに変更する必要があります。プロジェクトを選択->ターゲット->ビルドフェーズ..画像を参照enter image description here

0
Juraj Antas