7

我有一个适用于 ARM Cortex-m3 的 gcc 4.3.3 工具链,并希望将其集成到 XCode 中。

有没有办法设置 XCode (3.2) 来使用这个 gcc 工具链而不是内置的 GCC 4.2?

到目前为止我已经尝试过:我添加了一个修改后的副本,GCC 4.2.xcplugin并更改​​了名称、版本和可执行路径。它出现在 XCode 中,但是每当我将“C/C++ 编译器版本”设置为自定义编译器时,它都会失败

GCC_VERSION 的值“4.3.3”无效

似乎有效的版本号在其他地方被硬编码,因为即使我删除了原始版本GCC 4.2.xcplugin,该值4.2仍然有效(但在“C/C++ 编译器版本”下拉列表中不再可见)。

4

3 回答 3

5

仅供参考 - 我将 gcc 4.4 集成到最新的 Xcode 3.2.4 中,包括标志 - 请参阅http://skurganov.blogspot.com/上的博客

于 2010-10-08T19:43:16.103 回答
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"/目录
  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 编译器 Xcode 插件
---
+ GCC 4.2 编译器 Xcode 插件
  1. 光盘资源
  2. mv "GCC 4.2.xcspec" "GCC Arm 4.4.1.xcspec"
  3. 修改“GCC Arm 4.4.1.xcspec”
10c10
- 标识符 = “com.apple.compilers.gcc.arm-4_4_1”;
---
+标识符=“com.apple.compilers.gcc.4_2”;
13,16c13,16
- 名称 = “GCC Arm 4.4.1”;
- 描述 =“GNU Arm C/C++ 编译器 4.4.1”;
- 版本 = “arm-4.4.1”;
---
+名称=“GCC 4.2”;
+ 描述 = "GNU C/C++ 编译器 4.2";
+版本=“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
- 支持ZeroLink = 否;
-“支持PredictiveCompilation”=否;
---
+ 支持ZeroLink = 是;
+“支持PredictiveCompilation”=是;
52,53c52,53
-“支持MacOSXDeploymentTarget”=否;
-“支持MacOSXMinVersionFlag”=否;
---
+ "支持MacOSXDeploymentTarget" = 是;
+ "SupportsMacOSXMinVersionFlag" = 是;
88a89,90
- “-拱门”,
- “$(价值)”,
  1. 将编译器链接到 /Developer/usr/bin/gcc-arm.4.4.1

由于 wiki 重新格式化,上面的差异并不准确,但相关信息在那里。我注意到的关键部分(以及您在上面似乎有错误的部分)是标识符更改必须与版本号更改相对应(用“。”替换为“_”)。

摆脱 -arch 参数适用于编译,但不适用于链接。由于我的 gcc 不接受此参数,我目前无法链接。除非我找到另一种方法来解决这个问题,否则我可能会放入一个脚本而不是 gcc 可执行文件来拉出这个选项。

于 2010-05-20T16:05:34.730 回答
1

我自己也在做这个。

目前,您似乎必须继承内置的编译器参考规范。

添加以下键:

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

使插件正确加载。但是,由于苹果特定的编译器补丁,存在无效标志的问题。我现在正在做那部分工作。

于 2010-04-17T18:55:11.233 回答