将自定义编译器添加到XCode 3.2

时间:2009-12-21 17:35:01

标签: xcode cross-compiling xcode3.2 cortex-m3

我有一个用于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 ++编译器版本”中不可见)再下来了。)

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

我自己正在研究这个问题。

目前,看起来你必须继承一个内置的编译器参考规范。

添加密钥:

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

正确加载插件。但是,由于Apple特定的编译器补丁,存在无效标志的问题。我现在正在研究那部分。

答案 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(可能不是绝对必要的)
  5. 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资源
    2. mv“GCC 4.2.xcspec”“GCC Arm 4.4.1.xcspec”
    3. 修改“GCC Arm 4.4.1.xcspec”
    4. 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)",
      
      1. 将编译器链接到/Developer/usr/bin/gcc-arm.4.4.1
      2. 由于wiki重新格式化,上面的差异不准确,但相关信息就在那里。我注意到的关键部分(以及您上面看到的错误)是标识符更改必须与版本号更改相对应(“。”替换为“_”)。

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