xcode LLVM 5.1 clang错误

时间:2014-03-14 01:42:04

标签: ios xcode compiler-construction llvm

自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,当前有一些无效的编译器选项   指定。需要使用无效编译器选项的项目   已更改为删除这些选项。为了帮助缓解这种转变,   编译器将暂时接受将错误降级为a的选项   警告:

     

-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

如何获得此解决方法?显然苹果已经搞砸了,因为它应该只是根据他们的文件向我发出警告而不是错误。

非常感谢任何帮助。在此问题得到纠正之前,我无法构建我的应用程序。

5 个答案:

答案 0 :(得分:12)

没有-fno-obj-arc之类的东西。这从不正常运作;你只是没有看到警告。正确的格式为-fno-objc-arc

编辑(从我下面的评论中提取的附加信息):这不是一个铿锵的错误。这是项目中的一个错误; clang只是报道它。项目本身错误地包含-fno-obj-arc参数,可能在目标的Compile Sources构建阶段(如下所述:How can I disable ARC for a single file in a project?)。很容易输入错误的设置; Xcode 5.1中发生的变化仅仅是clang现在正在引起你的注意。因此,正如我之前所说,永远不会正常工作;你可能想要关闭某些文件的ARC,但你没有这样做,因为构建参数输入错误。

答案 1 :(得分:6)

更新到xcode现在将未知的编译器标志抛出为硬错误而不是警告。发现这有用:

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

答案 2 :(得分:2)

我想到了亚特的一点帮助 我试图找出改变-fno-obj-arc的位置,NO ONE回答了这个问题。 我发现这个链接很有用...... http://blog.evanmulawski.com/?p=36

选择构建阶段并编译源代码后,您可以查看项目中的文件旁边的内容并更改其构建标记。

感谢您的尝试。

答案 3 :(得分:2)

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

答案 4 :(得分:0)

您需要将-fno-obj-arc更改为-fno-objc-arc。 选择项目 - >目标 - >建立阶段..查看图片enter image description here