Я имею работу gcc 4.3.3 набора инструментальных средств для Коры-m3 ARM и хотел бы интегрировать его в XCode.
Существует ли способ настроить XCode (3.2) для использования этого gcc набора инструментальных средств вместо встроенного GCC 4.2?
Что я попробовал до сих пор: я добавил измененную копию GCC 4.2.xcplugin
и изменил имя, версию и исполняемый путь. Это обнаруживается в XCode, но каждый раз, когда я установил "Версию Компилятора C/C++", к пользовательскому компилятору это перестало работать с
Недопустимое значение '4.3.3' для GCC_VERSION
Кажется, что числа действительной версии являются hardcoded где-то в другом месте потому что, даже когда я удаляю оригинал GCC 4.2.xcplugin
, значение 4.2
остается допустимым (но не видимо в "Версии Компилятора C/C++", выпадающей больше).
Я сам работаю над этим.
В настоящее время похоже, что вы должны унаследовать встроенную в компилятор спецификацию ref.
Добавление ключа:
BasedOn = "com.apple.compilers.gcc.4_2";
Обеспечивает правильную загрузку плагина. Однако существует проблема недопустимых флагов из-за патчей компилятора Apple. Я работаю над этой частью прямо сейчас.
Я добился того, что фаза компиляции работает. Для этого:
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
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)",
Из-за переформатирования вики, приведенные выше различия не совсем точные, но соответствующая информация там есть. Критическая часть, которую я отметил (и которую вы, похоже, неправильно указали выше), заключается в том, что изменение идентификатора должно соответствовать изменению номера версии (при этом "." заменяется на "_").
Избавление от параметра -arch работает для компиляции, но не для линковки. Поскольку мой gcc не принимает этот параметр, я не могу линковать в данный момент. Если я не найду другого способа исправить это, я, вероятно, добавлю скрипт вместо исполняемого файла gcc, чтобы убрать этот параметр.