主要内容

自定义构建过程与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”,“退出”阶段。

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

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

    make_rtw VAR1 = 0 VAR2 = 4

    生成以下:

    % - f无标题的。可VAR1 = 0 VAR2 = 4

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

  • buildInfo:RTW.BuildInfo对象包含编译和链接信息生成的代码。只提供了“after_tlc”,“before_make”,“after_make”,“退出”阶段。中的信息对象的尽头“after_tlc”阶段可能不完整。在后期,“before_make”“after_make”方法也可以将信息添加到对象。关于使用的更多信息RTW.BuildInfo对象,看到代码编译定制

申请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.m文件不能对建立文件夹的位置不正确的假设。后一个点“入口”阶段,你可以获得建立文件夹的路径。在接下来的MATLAB代码示例,建立文件夹的路径作为一个特征向量返回到变量buildDirPath

buildDirPath = rtwprivate (get_makertwsettings, gcs, BuildDirectory);

请注意

不使用月31_make_rtw_hook.m文件更改模型配置。例如,不要使用一个钩子方法:

  • 模型变量之间切换。

  • 调用set_param函数。

改变模型的配置可能产生意想不到的代码生成的结果。

控制代码使用STF_make_rtw_hook.m再生

当你重建模型中,默认情况下,构建流程执行检查,以确定是否对模型所做的变更或相关设置需要再生的模型代码。(在标准的详细信息,请参见控制再生的模型代码)。如果检查确定顶级模型代码生成是必需的,模型构建过程完全重新生成和编译代码。如果检查表明,顶部模型生成的代码是当前的模型,和模型设置不需要完全再生,构建过程省略了再生的模型代码。

不管上面模型重新生成代码,构建过程随后构建过程调用钩子,包括月31_make_rtw_hook功能和代码生成命令。以下机制允许您执行操作相关代码的再生月31_make_rtw_hook功能:

  • 强制重新生成代码,使用以下的函数调用“入口”看点:

    环球套票。targetNeedsCodeGen(‘设置’,真正的);
  • 在钩子“before_tlc”通过“退出”,buildOpts结构传递给钩一个布尔字段codeWasUpToDate。字段被设置为真正的如果模型代码是最新和代码没有再生,或如果代码没有日期和代码生成。您可以定制钩行动基于这个字段的值。例如:

    …如果buildOpts案例“before_tlc”。codeWasUpToDate%Perform hook actions for up to date model else %Perform hook actions for full code generation end ...

使用STF_make_rtw_hook。为您的构建过程

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

  1. 复制ert_make_rtw_hook.m一个文件夹在MATLAB的道路。重命名它按照描述的命名约定使用STF_make_rtw_hook文件的约定。例如,使用它与生物利用的目标grt.tlc,将它重命名为grt_make_rtw_hook.m

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

  3. 实现钩子,你需要通过添加代码语句中开关hookMethod声明。

钩方法after_tlc

after_tlc钩方法可用完全向后兼容。

的格式生成的代码中after_tlc舞台不是最终的格式。

相关的话题