代码生成模板 (CGT) 文件
代码生成模板 (CGT) 文件定义生成的源代码和头文件的顶级组织和格式。CGT 文件具有以下应用:
在代码文件中生成自定义前注(注释部分)。请参阅Generate Custom File and Function Banners。
使用 CFP 模板生成自定义代码需要 CGT 文件。要使用 CFP 模板,您必须了解 CGT 文件结构。不过,在很多情况下,您可以使用默认的 CGT 文件而无需修改它。
默认 CGT 文件
代码生成软件提供了一个默认的 CGT 文件,
。以默认文件为基础创建自定义 CGT 文件。matlabroot
/toolbox/rtw/targets/ecoder/ert_code_template.cgt
CGT 文件结构
CGT 文件由一个必需部分和四个可选部分组成:
代码插入部分
(必需)此部分包含定义将生成的代码有序划分为多个部分(例如 Includes
和 Defines
部分)的标记。标记的形式如下:
%<SectionName>
例如,
%<Includes>
代码生成软件定义了一组最小的必需标记。这些标记生成 C 或 C++ 源代码或头代码。它们是内置标记(请参阅内置标记和部分)。您还可以定义自定义标记和自定义部分。
每个标记函数都充当生成代码相应部分的占位符。标记的顺序定义了相应部分在生成的代码中出现的顺序。如果不包含标记,则不会生成相应的部分。要将代码生成到给定部分,请从 CFP 模板明确调用代码模板 API,如 Custom File Processing (CFP) Templates 中所述。
CGT 标记定义生成代码的高级组织。使用代码模板 API,您可以将每个代码段划分为命名的小节,如 小节 中所述。
在代码插入部分,您还可以在标记之间插入 C 或 C++ 注释。这些注释直接发送到生成的代码中。
文件前注部分
(可选)此部分包含您在生成自定义文件前注时使用的注释和标记。
函数前注部分
(可选)此部分包含用于生成自定义函数前注的注释和标记。
共享实用工具函数前注部分
(可选)此部分包含用于生成自定义共享实用工具函数前注的注释和标记。
文件尾部
(可选)本节包含用于生成自定义预告片前注的注释。
有关更多信息,请参阅Generate Custom File and Function Banners。
内置标记和部分
以下代码摘录显示了默认 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 文件然后重建模型,则代码生成过程不会强制构建顶层模型。要重新生成代码,请参阅Force Regeneration of Top Model Code。
下表总结了内置标记和相应的节名称,并描述了代码节。
内置 CGT 代币和相应的代码段
标记和部分名称 | 描述 |
---|---|
|
|
|
|
|
|
| 枚举类型部分 |
| 数据定义(例如, |
| 数据声明(例如, |
| C 或 C++ 函数 |
小节
您可以为任何部分定义一个或多个命名小节。一些内置部分有预定义的小节,总结在表 为内置节定义的小节 中。
注意
节和小节按照 CGT 文件中列出的顺序发送到源文件或头文件。
使用自定义部分功能,您可以定义其他部分。请参阅Generate a Custom Section。
为内置节定义的小节
节 | 小节 | 小节描述 |
---|---|---|
| 不适用 | |
| 不适用 | |
|
| 固有的 |
|
| 原始的 |
|
| 您可以在本节中放置任何类型的代码,包括依赖于前面部分的代码。 |
|
|
|
| 不适用 | |
| 不适用 | |
| 不适用 | |
| C 或 C++ 函数 | |
|
|
|
|
|
|
|
| 文档(注释)部分 |
|
| 您可以在此部分放置任何代码。 |