【发布时间】:2016-09-05 09:50:30
【问题描述】:
我想强制 Xcode 使用自定义编译器(来自 src 的“clang-llvm”构建),以便我可以使用 clang 插件。我的 Xcode 版本是 7.3.1。
【问题讨论】:
我想强制 Xcode 使用自定义编译器(来自 src 的“clang-llvm”构建),以便我可以使用 clang 插件。我的 Xcode 版本是 7.3.1。
【问题讨论】:
人们说自定义工具链是可能的。我没有对它们进行研究,因为更简单的解决方案对我很有效:
也可以通过设置适当的 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 项目的构建设置中定义以下用户定义的设置就足够了:
CC=my-c-compiler
CXX=my-cxx-compiler
LIBTOOL=my-linker-for-static-libraries
如果你使用 CMake,自动注入编译器的方法是使用
set_target_properties(your-target PROPERTIES XCODE_ATTRIBUTE_CC "${YOUR_CC}")
set_target_properties(your-target PROPERTIES XCODE_ATTRIBUTE_CXX "${YOUR_CXX}")
【讨论】:
几年前我写了一篇文章,正好解决了你描述的问题:Creating and using Clang plugin with Xcode
要启用自定义 clang,您需要实际修补 Xcode.app 本身的内部,这在技术上是可行的,但是:
所以一般来说它并没有真正扩展,所以要小心:)
【讨论】:
Xcode 有一个有点模糊的特性,它支持"alternative toolchains"。例如,Swift.org 为从当前资源构建的 Swift 提供了可安装的工具链。
不幸的是,虽然 Apple 的文档描述了如何安装和使用此类替代工具链,但并未描述如何创建它们。 Swift 源代码库中有构建工具链的脚本,您可以查看它们以了解它是如何完成的。他们在https://github.com/apple/swift/tree/master/utils。从build-toolchain 开始,它调用build-script 并从那里开始。
【讨论】:
LLVM_CREATE_XCODE_TOOLCHAINstackoverflow.com/questions/63688639/…的工具链
在项目或目标构建设置下添加用户定义设置
CC=/path/to/cc
CXX=/path/to/c++
如果您想要调用单个编译器或链接器,或者如果您想要调用一个蹦床来决定动态调用什么,这将非常有用。
使用 Clang LLVM 1.0.xcplugin 作为模板(在 Xcode.app 插件文件夹中找到),您可以修改 plist 以指向您自己的替代编译器和链接器。
这个OLLVM on iOS tutorial 走过它。
【讨论】:
从project setting 转到build setting 并选择目标。然后从顶部栏中选择Basic 旁边的All。然后在构建选项下你可以看到编译器选项。
参考下面的截图,
更新:
我认为你应该参考Using C and C++ in an iOS App with Objective-C++ 和this tutorial。
【讨论】:
llvm。以及为什么要设置另一个?