如何强制Xcode使用自定义编译器?

时间:2016-09-05 09:50:30

标签: xcode clang llvm

我想强制Xcode使用自定义编译器(来自src的'clang-llvm'构建),所以我可以使用clang插件。我的Xcode版本是7.3.1。

5 个答案:

答案 0 :(得分:6)

人们说可以使用自定义工具链。我没有对它们进行研究,因为更简单的解决方案对我来说效果很好:

  

也可以通过设置适当的"构建设置直接运行前端插件" Xcode。 (有几种方法,你可以在命令行上设置它们:例如:xcodebuild build FOO = bla。)这里有一些我认为有用的注入C标志的构建设置:

     

OTHER_CFLAGS,OTHER_CPLUSPLUSFLAGS或替换编译器和链接器:

     

CC,CPLUSPLUS,LD,LDPLUSPLUS,LIBTOOL

     

同样的方法可以控制"分析"行动:CLANG_ANALYZER_EXEC,CLANG_ANALYZER_OTHER_FLAGS

     

免责声明:其中一些构建设置未记录(afaik)。使用风险自负。

(取自[cfe-dev] Compile/refactor iOS Xcode projects

对我而言,在Xcode项目的Build Settings中定义以下用户定义的设置就足够了:

XSSFWorkbook wb = new XSSFWorkbook(fis);
wb.setMissingCellPolicy(MissingCellPolicy.CREATE_NULL_AS_BLANK);

如果您使用CMake ,自动注入编译器的方法是使用

CC=my-c-compiler

CXX=my-cxx-compiler

LIBTOOL=my-linker-for-static-libraries

答案 1 :(得分:3)

Xcode有一个模糊的功能,它支持"alternative toolchains"。例如,Swift.org为从当前源构建的Swift提供可安装的工具链。

不幸的是,虽然Apple的文档描述了如何安装和使用此类替代工具链,但它没有描述如何创建它们。 Swift源代码库中有脚本构建了一个工具链,您可以查看它们以了解它是如何完成的。他们在https://github.com/apple/swift/tree/master/utils。从build-toolchain开始,调用build-script并从那里开始。

答案 2 :(得分:2)

几年前,我写过一篇文章,完全解决了您所描述的问题:Creating and using Clang plugin with Xcode

要启用自定义clang,您需要实际修补Xcode.app本身的内部,这在技术上是可行的但是:

  1. 更新Xcode时会中断
  2. 它可以在您的计算机上正常运行
  3. 插件的版本,您的编译器应该匹配,即 它们应该使用相同的树编译
  4. 所以一般来说它并没有真正扩展,所以要小心:)

答案 3 :(得分:1)

project setting转到build setting并选择目标。然后从顶部栏中的All旁边选择Basic。然后在构建选项下,您可以看到编译器选项。

请参阅下面的屏幕截图

enter image description here

更新:

我认为您应该参考Using C and C++ in an iOS App with Objective-C++this tutorial

答案 4 :(得分:1)

方法1:更改用户定义的设置

在项目或目标构建设置下,添加用户定义的设置

CC=/path/to/cc
CXX=/path/to/c++

如果您有一个要调用的编译器或链接器,或者要调出决定要动态调用的蹦床,这将很有用。

User Defined Settings

方法2:通过插件创建完整的自定义工具链

使用Clang LLVM 1.0.xcplugin作为模板(位于Xcode.app插件文件夹中),您可以修改plist以指向您自己的备用编译器和链接器。

OLLVM on iOS tutorial贯穿其中。