在XCode 3.2中添加一个自定义编译器。

7
我有一个适用于ARM Cortex-m3的工作gcc 4.3.3工具链,并希望将其集成到XCode中。
有没有办法设置XCode(3.2)使用这个gcc工具链,而不是内置的GCC 4.2?
我尝试过的方法: 我添加了一个修改过的GCC 4.2.xcplugin的副本,并更改了名称、版本和可执行路径。它在XCode中显示出来,但是每当我将"C/C++ Compiler Version"设置为自定义编译器时,它都会失败,显示如下错误:

Invalid value '4.3.3' for GCC_VERSION

似乎有效的版本号被硬编码在其他地方,因为即使我删除原始的GCC 4.2.xcplugin,值4.2仍然有效(但在"C/C++ Compiler Version"下拉菜单中不可见)。
3个回答

5

这适用于Xcode 3,但不适用于Xcode 4... 有什么想法如何在Xcode 4中集成自定义编译器吗? - x2on

1

我正在自己的项目上工作。

目前看来,您需要继承一个内置的编译器 ref spec。

添加一个键:

BasedOn = "com.apple.compilers.gcc.4_2";

确保插件正确加载。然而,由于苹果特定的编译器补丁,存在无效标志的问题。我现在正在处理这部分。


1

我已经让编译阶段工作了。要做到这一点:

  1. 在/Developer/Library/Xcode/Plug-ins中
  2. cp "GCC 4.2.xcplugin" "GCC Arm 4.4.1.xcplugin"
  3. cd "GCC Arm 4.4.1.xcplugin"/Contents
  4. 修改Info.plist(可能不是严格必要的)
8c8
-   com.apple.xcode.compilers.gcc.arm-4_4_1
---
+   com.apple.xcode.compilers.gcc.4_2
12c12
-   GCC Arm 4.4.1 Compiler Xcode Plug-in
---
+   GCC 4.2 Compiler Xcode Plug-in
  1. cd Resources
  2. mv "GCC 4.2.xcspec" "GCC Arm 4.4.1.xcspec"
  3. 修改“GCC Arm 4.4.1.xcspec”
10c10
-     Identifier = "com.apple.compilers.gcc.arm-4_4_1";
---
+     Identifier = "com.apple.compilers.gcc.4_2";
13,16c13,16
-     Name = "GCC Arm 4.4.1";
-     Description = "GNU Arm C/C++ Compiler 4.4.1";
-     Version = "arm-4.4.1";
---
+     Name = "GCC 4.2";
+     Description = "GNU C/C++ Compiler 4.2";
+     Version = "4.2";
39c39
-         "com.apple.compilers.gcc.headers.arm_4_4_1",
---
+         "com.apple.compilers.gcc.headers.4_2",
42c42
-     ExecPath = "$(PLATFORM_DEVELOPER_BIN_DIR)/gcc-arm.4.4.1";
---
+     ExecPath = "$(PLATFORM_DEVELOPER_BIN_DIR)/gcc-4.2";
48,49c48,49
-     SupportsZeroLink = No;
-     "SupportsPredictiveCompilation" = No;
---
+     SupportsZeroLink = Yes;
+     "SupportsPredictiveCompilation" = Yes;
52,53c52,53
-     "SupportsMacOSXDeploymentTarget" = No;
-     "SupportsMacOSXMinVersionFlag" = No;
---
+     "SupportsMacOSXDeploymentTarget" = Yes;
+     "SupportsMacOSXMinVersionFlag" = Yes;
88a89,90
-                     "-arch",
-                     "$(value)",
将编译器链接到/Developer/usr/bin/gcc-arm.4.4.1。
由于维基百科的重新格式化,上述差异并不完全准确,但相关信息已经在那里。我注意到的关键部分(以及您上面似乎弄错了的地方)是标识符更改必须与版本号更改相对应(用“_”替换“.”)。
去掉-arch参数可以用于编译,但不能用于链接。由于我的gcc不接受此参数,我目前无法进行链接。除非我找到另一种解决方法,否则我可能会使用脚本来替代gcc可执行文件,以删除此选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接