Генерация кода Шаблона (CGT) файлы определяют организацию верхнего уровня и форматирование сгенерированных исходного кода и заголовочных файлов. Файлы CGT имеют следующие приложения:
Генерация пользовательских баннеров (разделов комментариев) в файлах кода. См. «Генерация пользовательских файлов и функциональных баннеров».
Для генерации пользовательского кода с использованием шаблона CFP требуется файл CGT. Чтобы использовать шаблоны CFP, необходимо понять структуру файла CGT. Однако во многих случаях можно использовать файл CGT по умолчанию, не изменяя его.
Программное обеспечение генерации кода предоставляет файл CGT по умолчанию,
. Основывайте свои пользовательские файлы CGT на файле по умолчанию.matlabroot
/ toolbox/rtw/targets/ecoder/ert_code_template.cgt
Файл CGT состоит из одного необходимого раздела и четырех необязательных разделов:
(Обязательно) Этот раздел содержит лексемы, которые определяют упорядоченное разбиение сгенерированного кода на несколько разделов (таких как Includes
и Defines
разделы). Лексемы имеют форму:
%<SectionName>
Для примера,
%<Includes>
Программное обеспечение генерации кода определяет минимальный набор необходимых лексем. Эти лексемы генерируют исходный код C или C++ или код заголовка. Они являются встроенными лексемами (см. «Встроенные лексемы» и «Разделы»). Можно также задать пользовательские лексемы и пользовательские разделы.
Каждая лексема функционирует как заполнитель для соответствующего раздела сгенерированного кода. Упорядоченное расположение лексем определяет порядок, в котором соответствующие разделы появляются в сгенерированном коде. Если вы не включаете лексему, то соответствующий раздел не генерируется. Чтобы сгенерировать код в конкретный раздел, явным образом вызовите API шаблона кода из шаблона CFP, как описано в Custom File Processing (CFP) Templates.
Лексемы CGT определяют высокоуровневую организацию сгенерированного кода. Используя API шаблона кода, можно разделить каждую секцию кода на именованные подразделы, как описано в подразделах.
В разделе вставки кода можно также вставить комментарии C или C++ между лексемами. Такие комментарии излучаются непосредственно в сгенерированный код.
(Необязательно) Этот раздел содержит комментарии и лексемы, используемые при создании пользовательского баннера файлов.
(Необязательно) Этот раздел содержит комментарии и лексемы для использования при создании пользовательского баннера функций.
(Необязательно) Этот раздел содержит комментарии и лексемы для использования при создании пользовательского баннера общих служебных функций.
(Необязательно) Этот раздел содержит комментарии для использования при создании пользовательского баннера трейлера.
Для получения дополнительной информации об этих разделах см. «Генерация пользовательских файловых и функциональных баннеров».
Следующий экстракт кода показывает необходимый раздел вставки кода файла CGT по умолчанию с необходимыми встроенными лексемами.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Code insertion section (required) %% These are required tokens. You can insert comments and other tokens in %% between them, but do not change their order or remove them. %% %<Includes> %<Defines> %<Types> %<Enums> %<Definitions> %<Declarations> %<Functions>
Обратите внимание на следующие требования к настройке файла CGT:
Не удаляйте необходимые встроенные лексемы.
Встроенные лексемы должны отображаться в указанном порядке, поскольку каждый последующий раздел имеет зависимости от предыдущих разделов.
Только одна лексема на линию.
Не повторяйте лексемы.
Вы можете добавить пользовательские лексемы и комментарии к разделу вставки кода, если вы не нарушаете предыдущие требования.
Примечание
Если вы изменяете файл CGT, а затем перестраиваете модель, процесс генерации кода не форсирует сборку верхней модели. Для регенерации кода см. Раздел «Принудительная регенерация кода верхней модели».
В следующей таблице представлены встроенные лексемы и соответствующие имена разделов, а также описаны секции кода.
Встроенные лексемы CGT и соответствующие секции кода
Лексема и раздела | Описание |
---|---|
|
|
|
|
|
|
| Раздел перечисляемых типов |
| Определения данных (для примера, |
| Объявления данных (для примера, |
| Функции C или C++ |
Можно задать один или несколько именованных подразделов для любого сечения. Некоторые встроенные разделы имеют предопределенные подразделы, представленные в таблице «Подразделы, определенные для встроенных разделов».
Примечание
Разделы и подразделы излучаются в исходный или заголовочный файл в порядке, указанном в файле CGT.
Используя пользовательскую функцию сечения, можно задать дополнительные сечения. См. «Сгенерировать пользовательский раздел».
Подразделы, определенные для встроенных разделов
Раздел | Подразделы | Описание подраздела |
---|---|---|
| Н/Д | |
| Н/Д | |
|
| Внутренняя |
|
| Примитивные |
|
| Вы можете разместить в этом разделе любой тип кода, включая код, который имеет зависимости от предыдущих разделов. |
|
|
|
| Н/Д | |
| Н/Д | |
| Н/Д | |
| Функции C или C++ | |
|
|
|
|
|
|
|
| Раздел документации (комментарий) |
|
| Вы можете разместить любой код в этом разделе. |