如何让Xcode使用替代版本的clang?

时间:2014-04-14 21:46:26

标签: xcode macos compiler-construction clang

如何设置Xcode以使用llvm.org分发的clang而不是Apple提供的clang?

如果我下载clang binaries并安装到/usr/local,然后将我的编译器设置为其他... - >在Xcode中/usr/local/bin/clang,然后我收到表单错误:

  

为架构'x86_64'选择了不支持的编译器'/ usr / local / bin / clang'

     

无法为sourcecode.c.c类型的文件...确定具体的GCC编译器。

更新:我找到了一种方法,可以通过将/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr符号链接到clang+llvm-3.4-x86_64-apple-darwin10.9根目录来完成这项工作,但有一种方法会好得多在不修改Xcode目录树的情况下为Xcode设置替代编译器。

2 个答案:

答案 0 :(得分:12)

最简单的选项(也是最容易撤消的选项)是添加 CC 构建标记。转到您的项目或目标的构建设置,然后选择编辑 - > 添加构建设置 - >从菜单中添加用户定义的设置

Adding custom build flags

将标志命名为CC,并将值设置为Clang二进制文件的路径。

Setting the <code>CC</code> flag

您可以选择是否要将此编译器用于所有构建,或者仅调试构建(例如,当您使用Clang的实验和/或自修改版本时这是有意义的。)

请注意,对于自动完成,符号搜索等功能,Xcode不使用Clang二进制文件,而是使用Xcode分发的其他LLVM库。我已经描述了如何替换another post中的那些(这或多或少与你采用的方法相同)。通过仅更改Clang版本,编译后可能会在输入时获得与编辑器中显示的警告不同的警告。

答案 1 :(得分:7)

这是一个老问题,但由于我想安装更新的clang / libc ++以与Xcode 9+一起使用,这是我的解决方案,希望它对某人有用。

  1. 如果您要从源代码构建,请确保将-DLLVM_CREATE_XCODE_TOOLCHAIN=ON传递给cmake,然后运行make install-xcode-toolchain。如果使用自制软件安装,请使用brew install --with-toolchain llvm
  2. 将toolchain文件夹从其安装的地方(可能是/ usr / local / Toolchains)复制到/ Library / Developer / Toolchains
  3. 重新启动Xcode,您将在Xcode菜单中看到一个工具链选项。
  4. 我遇到的一个特殊问题是clang抱怨“不能对多个输出文件使用-o选项”。这是因为在撰写本文时,Apple的clang有一个新的选项,在主干中缺失。要解决此问题,请在项目设置中禁用Index-While-Building功能。