Сгенерируйте пользовательские файловые и функциональные баннеры

Используя файлы шаблона генерации кода (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 для пользовательской генерации баннеров, сделайте локальную копию шаблона кода по умолчанию и отредактируйте его следующим образом:

  1. Активируйте конфигурацию модели, с которым необходимо работать.

  2. Откройте панель < reservedrangesplaceholder0 > активной конфигурации модели .

  3. Перейдите на вкладку Шаблоны.

  4. По умолчанию шаблон кода, заданный в полях Code templates: Source file (*.c) template и Code templates: Header file (*.h) template, matlabroot/ toolbox/rtw/targets/ecoder/ert_code_template.cgt.

  5. Если необходимо использовать другой шаблон в качестве начальной точки, щелкните Browse, чтобы найти и выбрать файл CGT.

  6. Нажмите Edit кнопку, чтобы открыть файл CGT в редакторе MATLAB.

  7. Сохраните локальную копию файла CGT. Сохраните копию в папке, которая находится вне структуры папки MATLAB, но в пути MATLAB. При необходимости добавьте папку в путь MATLAB.

  8. Если вы хотите использовать файл CGT с пользовательским объектом, найдите файл CGT в папке в целевой корневой папке.

  9. Переименуйте локальную копию файла CGT. Когда вы переименуете файл CGT, обновите соответствующее Code templates: Source file (*.c) template или Code templates: Header file (*.h) template поле так, чтобы оно совпадало с именем нового файла.

  10. Отредактируйте и настройте локальную копию файла CGT для генерации баннеров с помощью информации, приведенной в разделе Настройка файла шаблона генерации кода (CGT) для генерации файлов и функциональных баннеров.

  11. Сохраните изменения в файле CGT.

  12. Нажмите Применить, чтобы обновить конфигурацию модели.

  13. Сохраните модель.

  14. Сгенерируйте код. Проверьте сгенерированные исходные файлы и файлы заголовков, чтобы подтвердить, что они содержат баннеры, заданные шаблоном или шаблонами.

Настройте файл шаблона генерации кода (CGT) для генерации файлового и функционального баннера

В этом разделе описывается, как редактировать файл CGT для генерации пользовательских файлов и функциональных баннеров. Описание файлов CGT см. в разделе Файлы шаблона генерации кода (CGT).

Компоненты разделов File и Function Banner в файле 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>

Сводные данные лексем для генерации баннеров файлов

FileName

Имя сгенерированного файла (для примера, "rtwdemo_udt.c").

FileType

Либо "source" или "header". Определяет, является ли сгенерированный файл .c или .cpp файл или .h файл.

FileTag

Заданные имена файлов file.c или .cpp и file.h; теги к файлам "file_c" и "file_h", соответственно.

ModelName

Имя генерирующей модели.

ModelVersion

Номер версии модели.

Description

Описание модели, заданное в файле CGT или текст, заданный на вкладке Descripton в Model Properties (Modeling > Model Settings). Эта лексема не поддерживается для ссылок на модели в иерархии модели-ссылки.

RTWFileVersion

Номер версии model.rtw файл.

RTWFileGeneratedOn

Временная метка model.rtw файл.

TLCVersion

Версия компилятора целевого языка.

SourceGeneratedOn

Временная метка сгенерированного файла.

CodeGenSettings

Настройки генерации кода для модели: целевой язык, выбор целевого устройства, выбор производственного оборудования, выбор тестового оборудования, цели генерации кода (в порядке приоритета) и результат валидации 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>

Сводные данные лексем для генерации функционального баннера

FunctionName

Имя функции

Arguments

Список аргументов функции

ReturnType

Возвращаемый тип функции

ModelName

Имя генерирующей модели

FunctionDescription

Краткий абстракт о функции

GeneratedFor

Полный путь блока для сгенерированной функции

BlockDescription

Пользовательский вход из параметра Block Description диалогового окна свойств блоков. BlockDescription содержит дополнительный атрибут маркера, style. Единственное допустимое значение для style является content_only, который чувствителен к регистру и заключен в двойные кавычки. Используйте content_only стиль, когда необходимо включить только содержимое описания блока, введенное в диалоговом окне параметров блоков. Синтаксис атрибута токена style является:

%<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>

Сводные данные лексем для генерации баннера общих служебных функций

FunctionName

Имя функции

Arguments

Список аргументов функции

ReturnType

Возвращаемый тип функции

FunctionDescription

Краткий абстракт о функции

Трейлер файлов

Раздел трейлера файлов содержит комментарии для генерации пользовательского трейлера файлов. Трейлер файла следует коду C or C++, сгенерированному из модели. Если вы опускаете раздел трейлера файлов из файла CGT, ни один трейлер файлов не излучает сгенерированный код. Следующий раздел является трейлером файлов по умолчанию, представленным в файле CGT по умолчанию.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Custom file trailer section (optional)
%%
<FileTrailer style="classic">
File trailer for generated code.

[EOF]
</FileTrailer>

Доступные для баннера файлов лексемы доступны для трейлера файлов. Смотрите Сводные данные Лексем для генерации баннеров файлов.