Способы переключения между версиями компиляторa

Способы переключения между версиями компиляторa

В состав Комплекта разработчика могут входить компиляторы различных версий (например, в состав КР редакции 2018 года входят компиляторы GCC версий 4.8.3 и 5.5.0). Существуют различные способы выбора активной версии компилятора (как для индивидуального проекта, так и глобально, т.е. для всех проектов по умолчанию)

Выбор локальной версии компилятора (per-project)
Через настройки компилятора в свойствах проектов
Через переменную GCC_VERSION
Через переменные CC и CXX
Выбор глобальной версии компилятора

Выбор локальной версии компилятора (per-project)

Выбор локальной версии (т.е. для индивидуального проекта) может осуществляться как с помощью графического интерфейса, так и с помощью конфигурационных файлов, а также переменных окружения и переменных среды GNU Make.

Через настройки компилятора в свойствах проектов

Применимость: среда разработки QNX Momentics IDE; только для проектов типа "QNX C/C++ Project" (в Momentics 7: "QNX Legacy Recursive Make Project").

Механизм: Свойства проекта (Alt+Enter) -> раздел "QNX C/C++ Project" -> закладка Compiler -> раздел "General options" -> выбрать компилятор из списка доступных.


Note: При явном задании версии компилятора в свойствах проекта (кроме значения "Default") в файл common.mk будет автоматически добавлена соответствующая запись (установка значения переменной GCC_VERSION):

....
#===== DEFCOMPILER_TYPE - default compiler.
DEFCOMPILER_TYPE=gcc
#===== GCC_VERSION - use it when you want to specify compiler version other than default.
GCC_VERSION=5.5.0
include $(MKFILES_ROOT)/qmacros.mk
...

Соответственно, при необходимости значение данной переменной можно редактировать непосредственно в файле common.mk.


Через переменную GCC_VERSION

Применимость: только для проектов типа "QNX C/C++ Project" (в Momentics 7: "QNX Legacy Recursive Make Project").

Механизм: поскольку для управления версией компилятора в данном типе проектов фактически используется внутренняя переменная GCC_VERSION, её значение может быть задано как с помощью графического интерфейса (см. пункт "Через настройки компилятора в свойствах проектов"), так и вручную при сборке проекта в режиме командной строки. Пример:

$ make GCC_VERSION=8.3.0 CPULIST=x86 all

Через переменные CC и CXX

Применимость: для проектов типа QNX Executable / QNX Library, а также других проектов, поддерживающих переопределение переменных CC и CXX "на лету": "чистые" Makefile-проекты, (возможно) проекты Autoconf и т.д.

Механизм: необходимо явно задать значение переменной CC (для C-проектов) или CXX (для C++-проектов) непосредственно в файле Makefile или при вызове команды make. При использования qcc/kcc в качестве драйвера компиляции необходимо использовать опцию -V<версия,> согласно правилам использования данной утилиты. При использовании инструментов gcc/g++ напрямую (или через nto-псевдонимы вида nto<архитектура>-gcc / nto<архитектура>-g++ ) необходимо добавлять суффикс -<версия> к именам исполняемых файлов. Примеры: Для проектов QNX Executable/QNX Library (используется драйвер компиляции qcc):

#Compiler definitions
#CC = qcc -Vgcc_nto$(PLATFORM)
#CXX = qcc -lang-c++ -Vgcc_nto$(PLATFORM)
CC = qcc -V8.3.0,gcc_nto$(PLATFORM)
LD = qcc -lang-c++ -V8.3.0,gcc_nto$(PLATFORM)

или (с явным заданием платформы без использования селектора $(PLATFORM))

#Compiler definitions
#CC = qcc -Vgcc_nto$(PLATFORM)
#CXX = qcc -lang-c++ -Vgcc_nto$(PLATFORM)
CC = i486-pc-nto-qnx6.5.0-gcc-8.3.0
CXX = i486-pc-nto-qnx6.5.0-g++-8.3.0

При работе в командной строке:

$ make CC=ntoppc-gcc-8.3.0 install

или

$ make CXX=arm-unknown-nto-qnx6.5.0eabi-g++-4.8.3 all

Выбор глобальной версии компилятора

Выбор глобальной версии осуществляется с помощью утилиты switch_devtools.




Предыдущий раздел: Тематические статьи