如何在“构建选项”中输入自定义GCC编译器选项

时间:2016-05-01 18:35:53

标签: xcode macos gcc

似乎存在各种问题,例如this one,而没有任何明确的解决方案适用于Xcode 7(甚至其他版本的Xcode)。

我有一个GCC版本,我希望Xcode在编译时使用。它不是标准的GCC,而是为不同的平台定制的。我可以在Eclipse中指定和使用这个编译器,但宁可使用Xcode。 “构建选项”仅列出LLVM而不列出任何其他内容。当我尝试添加"其他"在那部分中,我得到的只是这个空的弹出窗口:

enter image description here

这个盒子里有什么?我认为Xcode简单地使用我在系统上的特定路径上可用的GCC应该没什么大不了的,但这看起来相当复杂。

2 个答案:

答案 0 :(得分:2)

更新:显然有一个supported mechanism用于在Xcode中安装外部提供的工具链,我不知道。例如,可以从swift.org下载软件包,将软件包安装到/ Library / Developer / Toolchains或〜/ Library / Developer / Toolchains。一旦安装了其中一个,Xcode就有一个GUI选项来切换活动的工具链。

Swift来源有一个recent change,其中包含一个用于构建自己的自定义工具链的脚本。

如果您查看该构建设置的快速帮助(查看>实用程序>显示快速帮助检查器)或配置构建设置视图以显示设置名称而不是标题(编辑器>显示设置名称),您可以&#39 ; ll看到该设置为GCC_VERSION

如果您在构建设置参考中查找,那么find

  

GCC_VERSION

     

描述:

     

数字标识符。标识要用于编译的GCC版本   目标的源文件。当目标的“系统C规则”设置为   GCC系统版本(而不是特定的版本号),这个版本   设置在“运行脚本”构建阶段中不可用。

     

值:

     
      
  • 2.95.2
  •   
  • 3.1
  •   
  • 3.3
  •   
  • 4.0
  •   
     

默认值:

     

GCC系统版本。

     

指定于:

     
      
  • 项目信息>规则> “系统C规则。”
  •   
  • 目标信息>规则> “系统C规则。”
  •   
     

影响:

     

GCC_VERSION_IDENTIFIER。

实际上有点过时了。它说它是通过摆弄一个名为" System C规则"的构建规则(而不是设置)来指定的。您曾经在那里更改过版本,但现在有了直接构建设置。

无论如何,这可能并不能帮助你做你想做的事。我怀疑你可以在那里做任何有用的东西,更不用说使用第三方编译器。

但是,解释确实有提示。它提到了System C构建规则。您可以在目标配置屏幕的“构建规则”选项卡上修改构建规则。您可以找到System C规则并按下按钮将其复制到目标,这将允许您指定自定义脚本来处理C文件(包括Objective-C和C ++)。

实现这样的脚本并非易事。脚本的输入,预期输出和所需行为没有很好地记录。可以使用各种环境变量来使用这样的脚本。一些是构建设置。您需要将相关设置转换为编译器选项。例如,将CLANG_WARN_BOOL_CONVERSION设置转换为相应的-Wbool-conversion选项。

其他一些环境变量指示您应该对哪个文件进行操作,例如INPUT_FILE_PATHINPUT_FILE_NAME等。

您需要告诉Xcode您的规则输出了哪些文件。这些可以基于输入环境变量/设置,例如$(OBJECT_FILE_DIR)-$(CURRENT_VARIANT)/$(CURRENT_ARCH)/$(INPUT_FILE_BASE).o

一般来说,这不是Xcode变得容易的事情。

答案 1 :(得分:1)

有人编写了一个允许你使用Xcode中的gcc的插件。

http://hamelot.io/programming/add-gcc-compiler-to-xcode-6/

如果您有自定义gcc,那么您需要更改路径等,但该插件应该有效。