是否可以编译更新版本的LLVM并将其与Xcode一起使用?

时间:2013-04-28 09:46:35

标签: objective-c xcode llvm clang

我有一台无法升级到Lion的旧计算机,但我想将其用于编码,同时仍然利用instancetype和Objective-C文字等语法。有没有人试图编译一个较新的Clang和LLVM用于较旧的Xcode并成功?

1 个答案:

答案 0 :(得分:8)

有多种方法可以使用最新的LLVM / Clang版本。

(1)插件,如上面的评论中所述,例如: http://blog.wadetregaskis.com/tot-clang-llvm-in-xcode/

正如链接博客文章中所指出的,当Xcode使用较旧版本的libclang时,您可能会收到来自Xcode实时语法检查的错误/警告(更多内容见(3))。它可能编译得很好,但编辑源代码不会很有趣。

(2)通过 CC标志设置编译器。这可能是最简单/最快的解决方案,该设置仅影响一个项目。转到项目的Build Settings,选择“Add Build Setting” - > “添加用户定义的设置”(在Xcode 5中,这隐藏在编辑器菜单中),将其命名为CC并将值设置为您的Clang版本的路径。对我来说很好,但是和(1)一样,你可能会遇到与实时错误报告的冲突,特别是如果你想使用新的语法,如文字,或者为旧版本不理解的警告传递标志。

(3)替换编译器。确保在更换之前备份所有文件。有两个文件需要替换:Clang二进制文件和libclang.dylib。转到/Applications/Xcode.app/ - >选项 - 点击 - > “显示包装内容” - > /Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr。 clang在/bin中,libclang.dylib在/lib

这两个二进制文件既可以从源代码编译(当然也可以为您提供更新的版本),也可以从最新的Xcode软件包中复制。我使用自定义版本的libclang遇到了麻烦,但我怀疑问题源于我的修改。如果有疑问,请使用后来的Xcode版本中的libclang。

注意:我修改过的libclang二进制文件使用了ARC,因此与使用垃圾回收运行的Xcode 4不兼容。 Xcode 5本身使用ARC,因此问题已经消失。如果你修改了libclang unmodified,你不应该在Xcode 4或5中遇到这个问题。