主要内容

使用STF_make_rtw_hook文件自定义构建过程

构建过程允许您在钩子方法中提供可选的定制代码,这些方法将在代码生成和制作过程中的指定点执行。您可以使用钩子方法向构建流程添加特定于目标的操作。

STF_make_rtw_hook文件

您可以在一个通常称为月31_make_rtw_hook.m,在那里月31系统目标文件的名称,例如mytarget.这个文件实现了一个函数,月31_make_rtw_hook,它分派到一个特定的动作,这取决于hookMethod争论进来了。

构建过程调用月31_make_rtw_hook,把hookMethod论点和其他论点。您只实现构建过程需要的那些钩子方法。

如果您的模型包含引用模型,您可以实现月31_make_rtw_hook.m根据需要为每个参考模型。构建过程调用每个月31_make_rtw_hook对于参考模型,递归地处理这些文件(按依赖顺序)。

STF_make_rtw_hook文件使用约定

的方法来构建流程调用月31_make_rtw_hook,确认同时满足以下条件:

  • 月31_make_rtw_hook.m文件在MATLAB上®路径。

  • 文件名是系统目标文件的名称(月31),附在正文后面_make_rtw_hook.m.例如,如果使用自定义系统目标文件生成代码mytarget.tlc,命名你的钩子文件mytarget_make_rtw_hook.m,并命名在文件中实现的钩子函数mytarget_make_rtw_hook

  • 在文件中实现的钩子函数使用中描述的函数原型STF_make_rtw_hook。m函数原型和参数

STF_make_rtw_hook。m函数原型和参数

的函数原型月31_make_rtw_hook是:

函数月31_make_rtw_hook(hookMethod, modelName, rtwRoot, templateMakefile, buildOpts, buildArgs, buildInfo)

参数定义为:

  • hookMethod:指定生成过程的阶段的字符向量月31_make_rtw_hook函数被调用。下面的流程图总结了构建过程,突出显示了钩子点。的有效值hookMethod“入口”“before_tlc”“after_tlc”“before_make”“after_make”“退出”,“错误”.的月31_make_rtw_hook函数向相关代码发送开关声明。

  • modelName:指定模型名称的字符向量。在构建过程的所有阶段都有效。

  • rtwRoot:保留。

  • templateMakefile:模板makefile的名称。

  • buildOpts:一个包含布尔字段的MATLAB结构codeWasUpToDate.适用于“before_make”“after_make”,“退出”阶段。的buildOpts字段包括:

  • buildArgs:包含参数to的字符向量make_rtw.当您调用构建过程时,buildArgs是否从后面的参数复制“make_rtw”配置参数+代码生成+使命令字段。

    例如,下面的参数从使命令

    make_rtw VAR1=0 VAR2=4

    生成以下内容:

    % make -f untitled。mk VAR1=0 VAR2=4

    buildArgs参数不应用于工具链方法构建,因为这些构建不允许向make_rtw调用。在编译器命令行上,提供自定义定义(例如,VAR1 = 0 VAR2 = 4应用于TMF方法和工具链方法构建的配置参数>代码生成>自定义代码>定义了字段。

  • buildInfo:包含模型构建信息字段的MATLAB结构。适用于“after_tlc”“before_make”“after_make”,“退出”阶段。有关这些字段和访问它们的函数的信息,请参见构建过程定制

STF_make_rtw_hook.m的应用程序

下面是一些如何应用的例子月31_make_rtw_hook.m钩的方法。

一般情况下,您可以使用“入口”钩子来初始化构建过程,例如,在生成代码之前更改或验证设置。一份申请“入口”钩子是为了验证目的,重新运行最初在目标选择时运行的自动配置脚本,以比较脚本执行前后的模型参数。

其他的钩子点,“before_tlc”“after_tlc”“before_make”“after_make”“退出”,“错误”对于与外部工具链、源代码控制工具和其他环境工具的接口非常有用。

例如,你可以使用月31_make_rtw_hook.m之后的一个阶段“入口”获取生成文件夹的路径。在“退出”阶段,您可以在构建文件夹中找到生成的代码文件,并将它们检入您的版本控制系统。你可以用“错误”在代码生成或构建过程中发生错误时,清理钩子函数使用的静态或全局数据。

请注意

构建过程临时将MATLAB工作文件夹更改为各个阶段的构建文件夹“before_make”“after_make”“退出”,“错误”.你的月31_make_rtw_hook.mFile决不能对构建文件夹的位置作出错误的假设。在某个点之后“入口”阶段,您可以获得构建文件夹的路径。在下面的MATLAB代码示例中,构建文件夹路径作为变量的字符向量返回buildDirPath

buildDirPath = rtwprivate('get_makertwsettings',gcs,'BuildDirectory');

请注意

对内部模型配置的更改月31_make_rtw_hook.m文件(包括切换变量)可能会在代码生成中导致意想不到的结果。

使用STF_make_rtw_hook.m进行控制代码再生

当您重新构建模型时,默认情况下,构建过程执行检查,以确定对模型或相关设置的更改是否需要重新生成顶级模型代码。(关于标准的详细信息,请参见顶级模型代码的控制再生)。如果检查确定需要生成顶级模型代码,那么构建过程将完全重新生成并编译模型代码。如果检查表明顶级模型生成的代码相对于模型是当前的,并且模型设置不需要完全重新生成,那么构建过程就会忽略顶级模型代码的重新生成。

无论是否重新生成顶级模型代码,构建过程随后都会调用构建过程钩子,包括月31_make_rtw_hook函数和邮编生成命令。控件中与代码再生相关的操作有以下机制月31_make_rtw_hook功能:

  • 方法中的以下函数调用可强制重新生成代码“入口”看点:

    环球套票。targetNeedsCodeGen(‘设置’,真正的);
  • 在钩子从“before_tlc”通过“退出”,buildOpts传递给钩子的结构有一个布尔字段codeWasUpToDate.该字段设置为真正的如果模型代码是最新的,而代码没有重新生成,或者如果代码没有更新并且重新生成了代码。可以根据该字段的值自定义钩子动作。例如:

    ...if buildOpts. case 'before_tlc'codeWasUpToDate%Perform hook actions for up to date model else %Perform hook actions for full code generation end ...

使用STF_make_rtw_hook。m表示您的生成过程

要创建自定义月31_make_rtw_hook钩子文件为您的构建过程,复制和编辑示例ert_make_rtw_hook.m文件,该文件位于文件夹中matlabroot/工具箱/编码器/ embeddedcoder开放),详情如下:

  1. 复制ert_make_rtw_hook.m到MATLAB路径下的文件夹。根据中描述的命名约定重新命名STF_make_rtw_hook文件使用约定.例如,将它与GRT目标一起使用grt.tlc,重命名为grt_make_rtw_hook.m

  2. 重命名ert_make_rtw_hook函数在文件内匹配文件名。

  3. 类中的case语句中添加代码来实现所需的钩子开关hookMethod声明。