Используя файлы шаблона генерации кода (CGT), можно задать пользовательские файловые баннеры и функциональные баннеры для сгенерированных кодов. Баннеры файлов являются разделами комментариев в разделах заголовка и трейлера сгенерированного файла. Функциональные баннеры являются разделами комментариев для каждой функции в сгенерированном коде. Используйте эти баннеры, чтобы добавить оператора об авторских правах компании, указать символ специальной версии для вашей системы управления строением, удалить метки времени и для многих других целей. Эти баннеры могут содержать символы, которые распространяются на сгенерированный код.
Чтобы задать баннеры, создайте пользовательский файл CGT с настраиваемыми разделами баннеров. Процесс сборки создает исполняемый файл TLC из файла CGT. Затем процесс генерации кода вызывает файл TLC.
Вам не нужно знакомиться с программированием TLC, чтобы сгенерировать пользовательские баннеры. Можно изменять файлы примера, которые поставляются с целевым объектом ERT.
Примечание
Предыдущие релизы поддерживали прямое использование настроенных файлов TLC в качестве баннерных шаблонов. Они заданы с помощью шаблона баннера исходного файла (.c) и опций шаблона баннера файла заголовка (.h) целевого устройства ERT. Вы по-прежнему можете использовать пользовательский шаблон баннера файла TLC, однако теперь можно использовать файлы CGT.
Опции шаблона ERT на панели < reservedrangesplaceholder2 > > < reservedrangesplaceholder1 > конфигурации модели, в разделе Code templates, поддерживают генерацию баннеров.
Опции для генерации функций и баннеров файлов:
Шаблоны кода: Шаблон исходного файла (* .c): файл CGT, используемый при генерации исходного кода (.c
или .cpp
) файлы. Поместите этот файл в MATLAB® путь.
Шаблоны кода: Шаблон файла заголовка (* .h): файл CGT для использования при генерации заголовка (.h
) файлы. Вы должны поместить этот файл в путь MATLAB. Этот файл может быть тем же шаблоном, что и в поле Code templates: Source file (*.c) template, в этом случае в исходных и заголовочных файлах генерируются идентичные баннеры.
По умолчанию шаблон как для исходных, так и для заголовочных файлов
.matlabroot
/ toolbox/rtw/targets/ecoder/ert_code_template.cgt
В каждом из этих полей щелкните Browse, чтобы перейти к и выбрать существующий файл CGT для использования в качестве шаблона. Щелкните Edit, чтобы открыть указанный файл в редакторе MATLAB, где можно настроить его.
Чтобы настроить файл CGT для пользовательской генерации баннеров, сделайте локальную копию шаблона кода по умолчанию и отредактируйте его следующим образом:
Активируйте конфигурацию модели, с которым необходимо работать.
Откройте панель < reservedrangesplaceholder0 > активной конфигурации модели .
Перейдите на вкладку Шаблоны.
По умолчанию шаблон кода, заданный в полях Code templates: Source file (*.c) template и Code templates: Header file (*.h) template,
.matlabroot
/ toolbox/rtw/targets/ecoder/ert_code_template.cgt
Если необходимо использовать другой шаблон в качестве начальной точки, щелкните Browse, чтобы найти и выбрать файл CGT.
Нажмите Edit кнопку, чтобы открыть файл CGT в редакторе MATLAB.
Сохраните локальную копию файла CGT. Сохраните копию в папке, которая находится вне структуры папки MATLAB, но в пути MATLAB. При необходимости добавьте папку в путь MATLAB.
Если вы хотите использовать файл CGT с пользовательским объектом, найдите файл CGT в папке в целевой корневой папке.
Переименуйте локальную копию файла CGT. Когда вы переименуете файл CGT, обновите соответствующее Code templates: Source file (*.c) template или Code templates: Header file (*.h) template поле так, чтобы оно совпадало с именем нового файла.
Отредактируйте и настройте локальную копию файла CGT для генерации баннеров с помощью информации, приведенной в разделе Настройка файла шаблона генерации кода (CGT) для генерации файлов и функциональных баннеров.
Сохраните изменения в файле CGT.
Нажмите Применить, чтобы обновить конфигурацию модели.
Сохраните модель.
Сгенерируйте код. Проверьте сгенерированные исходные файлы и файлы заголовков, чтобы подтвердить, что они содержат баннеры, заданные шаблоном или шаблонами.
В этом разделе описывается, как редактировать файл CGT для генерации пользовательских файлов и функциональных баннеров. Описание файлов CGT см. в разделе Файлы шаблона генерации кода (CGT).
В файле CGT можно изменить следующие разделы: баннер файла, баннер функции, баннер общей служебной функции и трейлер файла. Каждый раздел определяется открытыми и близкими тегами. Теги, характерные для каждого раздела, показаны в следующей таблице.
Раздел файла CGT | Открыть тег | Закрыть тег |
---|---|---|
Файловое знамя | <FileBanner> | </FileBanner> |
Функциональное знамя | <FunctionBanner> | </FunctionBanner> |
Баннер общего пользования | <SharedUtilityBanner> | </SharedUtilityBanner> |
Трейлер файлов | <FileTrailer> | </FileTrailer> |
Можно настроить баннеры, включив лексемы и комментарии между открытым и закрытым тегом для каждого раздела. Лексемы обычно являются переменными TLC, например <ModelVersion>
, которые заменяются значениями в сгенерированном коде.
Примечание
Включение индикаторов C-комментариев, '/* 'или' */', в содержимое вашего баннера может привести к ошибке в сгенерированном коде.
Открытый тег включает атрибуты тега. Заключайте значение атрибута в двойные кавычки. Для открытого тега доступны следующие атрибуты:
width
: задает ширину комментариев к файлу или баннеру функций в сгенерированном коде. Значение по умолчанию является 80.
style
: задает контур для комментариев к файлу или баннеру функции в сгенерированном коде.
Синтаксис открытого тега следующий:
<OpenTag
style = “style_value”
width = “num_width”
>
Примечание
Если для параметра Configuration Parameters > Code Generation > Language задано значение C++
, чтобы выбрать стиль комментария, который использует обозначение комментария C (/*...*/
), необходимо также задать параметр Configuration Parameters > Comments > Comment style равным Multi-line
.
Встроенные опции стиля для style
атрибут:
classic
/* single line comments */ /* * multiple line comments * second line */
classic_cpp
// single line comments // // multiple line comments // second line //
box
/**********************************************************/ /* banner contents */ /**********************************************************/
box_cpp
//////////////////////////////////////////////////////////// // banner contents // ////////////////////////////////////////////////////////////
open_box
/********************************************************** * banner contents **********************************************************/
open_box_cpp
//////////////////////////////////////////////////////////// // banner contents ////////////////////////////////////////////////////////////
doxygen
/** single line comments */ /** * multiple line comments * second line */
doxygen_cpp
/// single line comments /// /// multiple line comments /// second line ///
doxygen_qt
/*! single line comments */ /*! * multiple line comments * second line */
doxygen_qt_cpp
//! single line comments //! //! multiple line comments //! second line //!
Этот раздел содержит комментарии и лексемы для использования при создании пользовательского баннера файлов. Баннер файла предшествует коду C or C++, сгенерированному моделью. Если вы опускаете раздел баннера файла из файла CGT, то ни один баннер файла не излучает в сгенерированный код.
Примечание
Если вы настраиваете баннер файла, программное обеспечение не издает настраиваемый баннер для файла const_params.c
.
Следующий раздел является разделом баннера файлов, снабженным файлом CGT по умолчанию,
.matlabroot
/ toolbox/rtw/targets/ecoder/ert_code_template.cgt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Custom file banner section (optional) %% <FileBanner style="classic"> File: %<FileName> Code generated for Simulink model %<ModelName>. Model version : %<ModelVersion> Simulink Coder version : %<RTWFileVersion> C/C++ source code generated on : %<SourceGeneratedOn> %<CodeGenSettings> </FileBanner>
Сводные данные лексем для генерации баннеров файлов
| Имя сгенерированного файла (для примера, |
| Либо |
| Заданные имена файлов |
| Имя генерирующей модели. |
| Номер версии модели. |
| Описание модели, заданное в файле CGT или текст, заданный на вкладке Descripton в Model Properties (Modeling > Model Settings). Эта лексема не поддерживается для ссылок на модели в иерархии модели-ссылки. |
| Номер версии |
| Временная метка |
| Версия компилятора целевого языка. |
| Временная метка сгенерированного файла. |
| Настройки генерации кода для модели: целевой язык, выбор целевого устройства, выбор производственного оборудования, выбор тестового оборудования, цели генерации кода (в порядке приоритета) и результат валидации Code Generation Advisor. |
Этот раздел содержит комментарии и лексемы для использования при создании пользовательского баннера функций. Баннер функции предшествует функции C или C++, сгенерированной в процессе сборки. Если вы опускаете раздел баннера функции из файла CGT, баннер функции по умолчанию излучает в сгенерированный код. Следующий раздел является разделом баннера функций по умолчанию с файлом CGT по умолчанию,
.matlabroot
/ toolbox/rtw/targets/ecoder/ert_code_template.cgt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Custom function banner section (optional) %% Customize function banners by using the following predefined tokens: %% %<ModelName>, %<FunctionName>, %<FunctionDescription>, %<Arguments>, %% %<ReturnType>, %<GeneratedFor>, %<BlockDescription>. %% <FunctionBanner style="classic"> %<FunctionDescription> %<BlockDescription> </FunctionBanner>
Сводные данные лексем для генерации функционального баннера
| Имя функции |
| Список аргументов функции |
| Возвращаемый тип функции |
| Имя генерирующей модели |
| Краткий абстракт о функции |
| Полный путь блока для сгенерированной функции |
| Пользовательский вход из параметра Block Description диалогового окна свойств блоков. %<BlockDescription style = "content_only"> |
Раздел баннера общей служебной функции содержит комментарии и лексемы для использования при создании пользовательского баннера общей служебной функции. Баннер общей служебной функции предшествует разделяемым служебным функциям C или C++, сгенерированным в процессе сборки. Если вы опускаете раздел общей служебной функции баннера из файла CGT, баннер общей служебной функции по умолчанию излучается в сгенерированный код. Следующий раздел является разделом баннера общих служебных функций по умолчанию с файлом CGT по умолчанию
.matlabroot
/ toolbox/rtw/targets/ecoder/ert_code_template.cgt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Custom shared utility function banner section (optional) %% Customize banners for functions generated in shared location by using the %% following predefined tokens: %<FunctionName>, %<FunctionDescription>, %% %<Arguments>, %<ReturnType>. %% <SharedUtilityBanner style="classic"> %<FunctionDescription> </SharedUtilityBanner>
Сводные данные лексем для генерации баннера общих служебных функций
| Имя функции |
| Список аргументов функции |
| Возвращаемый тип функции |
| Краткий абстракт о функции |
Раздел трейлера файлов содержит комментарии для генерации пользовательского трейлера файлов. Трейлер файла следует коду C or C++, сгенерированному из модели. Если вы опускаете раздел трейлера файлов из файла CGT, ни один трейлер файлов не излучает сгенерированный код. Следующий раздел является трейлером файлов по умолчанию, представленным в файле CGT по умолчанию.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Custom file trailer section (optional) %% <FileTrailer style="classic"> File trailer for generated code. [EOF] </FileTrailer>
Доступные для баннера файлов лексемы доступны для трейлера файлов. Смотрите Сводные данные Лексем для генерации баннеров файлов.