KEIL. Настройка проекта (вкладка C/C++ (AC6) )

C/C++ (AC6) компилятор

Диалог настроек для ARM Compiler 6 (ARMCLANG).

Preprocessor Symbols (символы препроцессора)

Define

Устанавливает символы препроцессора которые могут быть проверены директивами #if, #ifdef и #ifndef. Имена копируются в код так же как они написаны (чувствительны к регистру). Опционально, каждое имя может получать значения.

Для примера:

 

Это идентично директиве препроцессора #define :

1
2
3
#define Check 1
#define NoExtRam 1
#define X1 1+5

 

  • Параметры поля Define переводятся в параметр командой строки -Doption.
  • Для определения X2 без установки значения, введите -DX2 = в поле Misc Controls.

 

 

Undefine

Очищает предыдущие определения, которые вводятся в диалоговом окне верхнего уровня Настройки для группы…


Language / Code Generation (Язык/Генерация кода)

Execute-only Code (Только исполнение кода)
Генерирует код execute-only (только исполнение) и предотвращает компилятор от генерации данных которые могут иметь доступ в секцию кода. Параметр для командной строки -mexecute-only.
Optimization (Оптимизация)
Управление оптимизацией кода генерируемый компилятором. Параметр для командной строки -Onum|string.

  • <default> — это настройка по умолчанию для uVision. Это уровень оптимизации по умолчанию или настройки uVision для таргета или родительской группы. Параметра для командной строки нет.
  • -O0 — является уровнем оптимизации по умолчанию для компилятора. Отключение большинства оптимизаций, за исключением некоторых простых изменений исходного кода. Выполняет минимальную оптимизацию для производительности скомпилированного двоичного файла. Этот параметр дает наилучшее возможное отладочное представление в окне Debug View.
  • -O1 — уровень оптимизации с ограничениями. Дает общее удовлетворительное представление отладки с хорошей плотностью кода.
  • -O2 — уровень высокой оптимизации. Отладочное представление может быть удовлетворительным, поскольку отображение объектного кода в исходный код не всегда понятен. Компилятор может выполнять оптимизацию, которая не может быть отображена с помощью отладочной информации.
  • -O3 — уровень максимальной оптимизации. Этот параметр обычно дает плохое представление отладки.
  • -Ofast — Включает все оптимизации с -O3 в комбинации с другими агрессивными оптимизациями, может нарушать строгое соблюдение языковых стандартов, включая -ffast-math.
  • -Os balanced — Сбалансированный код между скоростью и размером. По умолчанию компилятор выполняет оптимизацию для повышения производительности за счет возможного увеличения размера кода. Параметр для командной строки -Os.
  • -Oz image size — Оптимизация размера кода. По умолчанию компилятор выполняет оптимизацию для повышения производительности за счет возможного увеличения размера кода. Параметр для командной строки -Oz.
Link-Time Optimization (Оптимизация во время линковки)
Межмодульная оптимизация на стадии линковки. Параметр для командной строки -flto.
Split Load and Store Multiple
Говорит компилятору разделить LDM и STM инструкции на две или более LDM и STM инструкции для уменьшения задержки при обработке прерывания. Когда LDM/STM содержит больше 5 регистров процессора генерируются  несколько LDM / STM инструкций. Параметр для командной строки -fno-ldm-stm.
One ELF Section per Function (Один раздел ELF на функцию)
Создает один раздел ELF для каждой функции в исходном файле. Секции называются с тем же именем, что и функция, генерирующая раздел, но с использованием .text. префикса. Позволяет оптимизировать код или определять каждую функцию на отдельных адресах памяти. Если вы хотите разместить определенные элементы данных или структуры в отдельных разделах, пометьте их индивидуально __attribute __ ((section («name»))). Параметр для командной строки  -ffunction-sections. Включено по умолчанию.
Restrictions (Ограничения)
Этот параметр уменьшает возможность обмена адресами, данными и строковыми литералами между функциями. Как следствие, это может немного увеличить размер кода для некоторых функций.
Warnings (Предупреждения)
Управление генерацией диагностики со следующими настройками:

  • <unspecified> — Не добавляется строка управления компилятором. Поведение зависит от настроек по умолчанию компилятора или от параметров, установленных на родительских уровнях группы uVision. Параметр по умолчанию.
  • No Warnings — Диагностика не отображается. Параметр для командной строки -W.
  • All Warnings — Это настройка uVision по умолчанию. Показывает всю диагностику (-Weverything) и исключает (-Wno-xxx) те, которые перечислены в строке управления компилятора:
    -Weverything
    -Wno-reserved-id-macro
    -Wno-unused-macros
    -Wno-documentation-unknown-command
    -Wno-documentation
  • AC5-like Warnings — показывает все предупреждения которые ARM Compiler 5 может показать. Подавляет следующие предупреждения:
    -Wno-missing-variable-declarations
    -Wno-missing-prototypes
    -Wno-missing-noreturn
    -Wno-sign-conversion
    -Wnonportable-include-path
    -Wno-packed
    -Wno-reserved-id-macro
    -Wno-unused-macros
    -Wno-documentation-unknown-command
    -Wno-documentation
    -Wno-license-management
    -Wno-parentheses-equality
  • MISRA compatible — показывает все предупреждения, кроме тех, которые противоречат правилам MISRA. Добавляет управляющие строки:
    -Wno-covered-switch-default
    -Wno-unreachable-code-break
Turn Warnings into Errors (Предупреждения как ошибки)
Предупреждающие сообщения рассматриваются как ошибки. Параметр для командной строки -Werror
Plain Char is Signed (Обычный Char как Signed)
Говорит компилятору обработать все переменные char как signed charПараметр для командной строки -funsigned-char. Отключено по умолчанию, добавив строку управления компилятором -funsigned-char
Read-Only Position Independent
Создает позиция-независимый код для доступа к константам (ROM). Параметр для командой строки -fropi.
Автоматически включает параметр -fropi-lowering. Это означает, что статическая инициализация выполняется во время выполнения тем же механизмом, который используется для вызова конструкторов статических объектов C++, которые должны выполняться перед main().
Restrictions (Ограничения)

  • Не может использоваться с C++ кодом.
Read-Write Position Independent
Создает позиция-независимый код для доступа к переменным (RAM). Параметр для командной строки -frwpi.
Автоматически включает обе опции:
-fropi-lowering — это означает, что статическая инициализация выполняется во время выполнения тем же механизмом, который используется для вызова конструкторов статических объектов C++, которые должны выполняться перед main().
-frwpi-lowering — это означает, что статическая инициализация выполняется во время выполнения с помощью механизма конструктора C++ для кода C и C++.
Language C (Язык С)
Указывает языковой стандарт для языка С. Эти настройки распространяются на зависимые группы и файлы и применяются на уровне файла во время компиляции. Тип файла определяет, какие настройки будет использовать компилятор настройки С или С++ языка.  Проверьте настройки в диалоге Свойства и *.c файла.
Дополнительную информацию о языковой поддержке и ограничениях см. в главе 1.3 LLVM component versions and language compatibility .
Добавляет командную строку -xc в дополнение к перечисленным ниже.

  • <default> — по умолчанию настраивается  uVision  родительской группы, таргета или компилятора. Нет командной строки.
  • c90 — скомпилировать C как определено в стандарте 1990 C. Является настройкой по умолчанию uVision и устанавливает строку управления -std=c90 для компилятора.
  • gnu90 — скомпилировать C, как определено стандартом 1990 C, с дополнительными расширениями GNU. Устанавливает строку управления -std=gnu90.
  • c99 — скомпилировать C, как определено стандартом C 1999 года. Устанавливает строку управления -std=c99 компилятора.
  • gnu99 — скомпилировать C, как определено стандартом 1999 C, с дополнительными расширениями GNU. Устанавливает строку управления -std=gnu99.
  • c11 — скомпилировать C, как определено стандартом C 2011 года. Устанавливает строку управления компилятором -std=c11.
  • gnu11 — компилировать C, как определено стандартом C 2011 года, с дополнительными расширениями GNU. Устанавливает строку управления -std=gnu11. Компилятор по умолчанию для файлов C.
Language C++ (Язык С++)
Указывает языковой стандарт для кода на C++. Эти настройки распространяются на зависимые группы и файлы и применяются на уровне файла во время компиляции. Ни один из приведенных ниже параметров не может быть просмотрен в поле управления компилятором на целевом или групповом уровне. Проверьте настройки в диалоговом окне Свойства файла * .cpp. Тип файла определяет, использует ли компилятор настройки языка C++ или языка C.
Добавляет строку управления -xc++ в дополнение к перечисленным ниже.

  • <default> — по умолчанию настраивается  uVision  родителькой группы, таргета или компилятора. Нет командной строки.
  • c++98 — компилировать C++, как определено стандартом 1998 года. Является настройкой по умолчанию uVision и устанавливает строку управления -std=c++98. Является стандартным для файлов C++.
  • gnu++98 — компилировать C++, как определено стандартом 1998 года, с дополнительными расширениями GNU. Устанавливает строку управления компилятором -std=gnu++98.
  • c++11 — компилировать C++, как определено стандартом 2011 года. Устанавливает строку управления компилятором -std=c++11.
  • gnu++11 — компилировать C++, как определено стандартом 2011 года, с дополнительными расширениями GNU. Устанавливает строку управления компилятором -std=gnu++11.
  • c++03 — скомпилируйте C++, как определено стандартом 2003 года. Устанавливает строку управления компилятором -std=c++03.
  • c++14(community) — компилировать C++, как определено стандартом 2014. Устанавливает строку управления компилятором -std=c++14.

    Для дополнительной информации обратитесь к разделу  1.1 Support level definitions for information about community features.

Short enums/wchar
Оптимизирует размер кода, чтобы улучшить использование памяти. Этот параметр может снизить производительность. Включено по умолчанию. Устанавливает строки управления компилятором:
-fshort-enums — устанавливает размер перечисляемого типа наименьшему типу данных, который может содержать наибольшее значение перечислителя (размер по умолчанию для типа перечисления составляет не менее 32 бит для -fno-short-enums).
-fshort-wchar — устанавливает размер wchar_t в 2 байта (размер wchar_t по умолчанию равен 4 байтам для -fno-short-wchar).
Restrictions (Ограничения)

  • ISO C ограничивает значения перечислителя диапазоном int. По умолчанию компилятор не выдаёт предупреждений о слишком больших значениях перечислителя, но когда для параметра Предупреждения установлено значение «Строго», отображается предупреждение.
  • Все связанные объекты, включая библиотеки, должны сделать тот же выбор. Также невозможно связать объектный файл, скомпилированный с -fshort-enums, с другим объектным файлом, который скомпилирован без -fshort-enums, и не связывать объектный файл, скомпилированный с -fshort-wchar, с другим объектным файлом, который компилируется без -fshort -wchar.
use RTTI (Использовать RTTI)
Поддержка управления функциями RTTI dynamic_cast и typeid в C++. Удаляет строку управления компилятора -fno-rtti, которая устанавливается по умолчанию (флажок не установлен).
No Auto Includes
Подавляет все C/C++ пути которые включены автоматически во время компиляции. Системные файлы, например, stdio.h, не зависят от настроек данного окна. Компилятор автоматически включает пути которые могут быть просмотрены в поле Compiler control string.

Include Paths (Подключаемые пути к файлам)
Позволяет добавить один или несколько (разделенных запятой) путей для поиска заголовочных файлов. Для примера, для #include «filename.h» компилятор ищет сначало  в текущей, а затем в папке исходного файла. Когда это не удается или когда #include <filename.h> используется, используются пути указанные в поле Include Paths. Когда и здесь не удается найти файл, тогда используются пути определенные в поле INC в ProjectManageProject Items.
Misc Controls (Дополнительное управление)
Укажите любую директиву, для которых нет индивидуального диалога управления. Например, чтобы изменить язык сообщений об ошибке на японский язык Show Japanese Messages.
Compiler control string
Отображает текущие директивы в командной строке компилятора. Прокрутите вниз по полю, чтобы просмотреть все настройки. Настройки языка C++ не указаны на целевом или групповом уровне. См. комментарии в разделе языка C++.
Следующие строки управления добавляются в зависимости от использования MDK:

Командная строка Описание строки
__UVISION_VERSION Основная и младшая версия μVision. Для примера: -D__UVISION_VERSION="520".
_RTE_ Установить когда RTE используется. Для примера: -D_RTE_.
__RTX Устанавливается когда используется RTX Kernel можно выбрать в   Options for Target — Target — Operation System. Не устанавливается при использовании RTE. Для примера: -D__RTX.
__MICROLIB Устанавливается когда используется Use MicroLIB может быть включен в  Options for Target — Target. Для примера: -D__MICROLIB.
__EVAL µVision работает в режиме оценки. Лицензия MDK-Lite. Для примера: -D__EVAL.
имя файла устройства
Имя файла устройства

Оставить ответ