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

Loy*_*ley 5 xcode objective-c llvm clang

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

hag*_*agi 8

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

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

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

(2)通过CC标志设置编译器.这可能是最简单/最快的解决方案,该设置仅影响一个项目.转到项目的生成设置,选择"添加构建设置" - >"添加用户定义的设置"(在Xcode 5,这是隐藏在编辑菜单),将其命名为CC和值设置为您锵版本的路径.对我来说工作得很好,但与(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中遇到这个问题.