文档

自定义代码生成后构建过程

对于某些应用程序,您可能希望控制在代码生成之后、编译之前发生的构建过程的各个方面。例如,您可能希望指定编译器或链接器选项。您可以自定义代码生成后发生的构建处理MATLAB®编码器™用于MEX函数、C/ c++库和C/ c++可执行文件。

您可以使用以下方法自定义构建:

使用code . updatebuildinfo自定义构建

要从MATLAB代码中定制代码生成后的构建:

  1. 在MATLAB代码中,调用coder.updateBuildInfo更新构建信息对象。您可以指定一个构建信息对象方法和该方法的输入参数。看到coder.updateBuildInfo而且构建信息方法

  2. 函数从MATLAB代码生成代码codegen命令或项目界面。

使用后代码生成命令自定义构建

使用post-code-generation命令定制构建:

  1. 编写代码生成后命令.通常,使用此命令获取项目名称和生成信息,或将数据添加到构建信息对象

  2. 使用代码生成后命令自定义生成

构建信息对象

在构建的开始,MATLAB编码器生成过程将以下项目、生成选项和依赖项信息记录到生成信息对象,环球套票。BuildInfo

  • 编译器选项

  • 预处理器标识符定义

  • 链接器选项

  • 源文件和路径

  • 包含文件和路径

  • 预编译的外部库

使用构建信息方法访问构建信息对象中的此信息。编写代码生成后命令解释如何使用函数来控制代码生成后的构建。

代码生成完成后,MATLAB编码器创建一个buildInfo.mat文件在构建文件夹中。

构建信息方法

使用这些方法来访问或向构建信息对象写入数据。语法为:

buildInfo。method_nameinput_arg1、……input_argn

addCompileFlags

addDefines

addIncludeFiles

addIncludePaths

addLinkFlags

addLinkObjects

addNonBuildFiles

addSourceFiles

addSourcePaths

addTMFTokens

findIncludeFiles

getCompileFlags

getDefines

getFullFileList

getIncludeFiles

getIncludePaths

getLinkFlags

getNonBuildFiles

getSourceFiles

getSourcePaths

packNGo

updateFilePathsAndExtensions

updateFileSeparator

编写代码生成后命令

代码生成后命令是一个MATLAB文件,通常调用从构建信息对象获取数据或向构建信息对象添加数据的函数。例如,您可以在变量中访问项目名称projectName环球套票。BuildInfo对象。buildInfo.您可以将命令编写为脚本或函数。

如果你把命令写成 然后
脚本 脚本可以直接访问项目(顶级函数)名称和构建信息。
函数 函数可以接收项目名称和构建信息作为参数。

如果代码生成后命令调用用户定义函数,请确保这些函数位于MATLAB路径上。如果构建过程无法找到命令中使用的函数,则该过程将失败。

您可以调用构建信息函数的组合来定制代码生成后的构建。看到在命令行中编写和使用后代码生成命令

将后代码生成命令编写为脚本

PostCodeGenCommand到脚本名称。

在命令行输入:

CFG = code .config('lib');cfg。PostCodeGenCommand = 'ScriptName”;

将Post-Code-Generation命令写成函数

PostCodeGenCommand函数签名。将命令定义为函数时,可以指定任意数量的输入参数。如果要访问项目名称,请包含projectName作为一个论证。如果要修改或访问构建信息,请添加buildInfo作为一个论证。

在命令行输入:

CFG = code .config('lib');cfg。PostCodeGenCommand = 'FunctionName(projectName buildInfo) ';

使用代码生成后命令自定义生成

在编写代码生成后命令之后,必须在构建处理中包含此命令。可以从项目设置对话框或命令行中包含该命令。

中使用后代码生成命令MATLAB编码器应用程序。

  1. 打开生成对话框中的生成代码页,单击生成箭头

  2. 点击更多的设置

  3. 自定义代码选项卡,设置Post-code-generation命令参数。

    如何使用PostCodeGenCommand选项取决于您是将命令作为脚本还是函数编写。看到在命令行中使用后代码生成命令而且在MATLAB编码器应用程序中使用后代码生成命令。

在命令行中使用后代码生成命令

设置PostCodeGenCommand代码生成配置对象的选项编码器。MexCodeConfig编码器。CodeConfig编码器。EmbeddedCodeConfig).

如何使用PostCodeGenCommand选项取决于您是将命令作为脚本还是函数编写。看到在命令行中使用后代码生成命令而且在MATLAB编码器应用程序中使用后代码生成命令。

在命令行中编写和使用后代码生成命令

下面的示例演示如何将后代码生成命令作为函数编写和使用。的setbuildargs函数将构建信息对象作为参数,设置链接选项,并将它们添加到构建信息对象。

  1. 创建一个后代码生成命令作为函数,setbuildargs,这需要buildInfo对象作为参数:

    正在编译的示例需要pthread支持。万博1manbetx-lpthread标志请求在构建中包含pthread库linkFlags = {'-lpthread'};buildInfo.addLinkFlags (linkFlags);

  2. 创建一个代码生成配置对象。设置PostCodeGenCommand选项“setbuildargs (buildInfo)”因此这个命令被包含在构建过程中:

    CFG = code .config('mex');cfg。PostCodeGenCommand = 'setbuildargs(buildInfo)';

  3. 使用配置选项,生成一个将配置对象传递给的MEX函数codegen.例如,对于函数喷火没有输入参数的:

    CFG foo

这个话题有用吗?