主要内容

转换codegen命令等效MATLAB编码器项目

你可以使用codegen命令-toproject转换a的选项codegen命令转换为等价物MATLAB®编码器™项目文件。然后,您可以使用另一个文件从项目文件生成代码codegen命令或MATLAB编码器应用程序。

例如,转换acodegen带输入参数的命令input_arguments到项目文件myProject.prj运行:

codegeninput_arguments-toprojectmyProject.prj

输入参数codegen包括:

  • 入口点函数的名称

  • 属性指定的输入类型定义arg游戏选项

  • 代码生成选项,包括在配置对象中指定的参数

  • 要包含在生成代码中的自定义源文件的名称

你也可以用the-toproject转换不完整的选项codegen命令到项目文件。例如,创建一个项目文件myProjectTemplate.prj只包含存储在配置对象中的代码生成参数cfg运行:

codegen配置cfg-toprojectmyProjectTemplate.prj
myProjectTemplate.prj不包含入口点函数或输入类型的说明。因此,您不能从这个项目文件生成代码。您可以打开myProjectTemplate.prj在里面MATLAB编码器应用程序,并使用它作为模板来创建完整的项目文件,您可以使用它来生成代码。

请注意

运行codegen命令-toproject选项不生成代码。它只创建项目文件。

示例:转换完成codegen命令到项目文件

定义一个MATLAB函数,myadd,返回两个值的总和。

函数Y = Myadd(U,V)% # codegenY = u + v;结束

创建一个编码器。CodeConfig对象,用于生成静态库。集TargetLang“c++”

cfg = coder.config (“自由”);cfg。TargetLang =“c++”

在MATLAB命令行中,创建并运行一个codegen命令。指定myadd作为入口点函数。指定输入myadd类型为可变大小的矩阵它的尺寸是无界的。指定cfg作为代码配置对象。包括-toproject转换的选项codegen命令转换为等价物MATLAB编码器带有名称的项目文件myadd_project.prj

codegen配置cfgmyaddarg游戏{coder.typeof(1,[INF,INF]),Coder.typeof(1,[Inf,Inf])}-toprojectmyadd_project.prj
项目文件'myadd_project.prj'已成功创建。开放项目

代码生成器创建项目文件myadd_project.prj在当前工作文件夹中。运行codegen与之-toproject选项不生成代码。它只创建项目文件。

生成代码myadd_project.prj通过使用另一个codegen命令。

codegenmyadd_project.prj

代码生成器生成一个c++静态库函数myadd在里面工作\ codegen \ lib \ myadd文件夹,工作是当前工作目录。

例如:转换不完整codegen命令到模板项目文件

创建一个编码器。CodeConfig对象,用于生成静态库。集TargetLang“c++”

cfg = coder.config (“自由”);cfg。TargetLang =“c++”

在MATLAB命令行中,创建并运行一个codegen命令。指定cfg作为代码配置对象。包括-toproject转换的选项codegen命令转换为等价物MATLAB编码器带有名称的项目文件myProjectTemplate.prj

codegen配置cfg-toprojectmyProjectTemplate.prj
项目文件的myProjectTemplate。成功创建Prj。开放项目

你现在可以打开myProjectTemplate.prj在里面MATLAB编码器应用程序,并使用它作为模板来创建完整的项目文件,您可以使用它来生成代码。

限制

当你使用codegen命令-toproject选项,这些限制适用于:

  • 导出CodeTemplate参数的编码器。EmbeddedCodeConfig不支持指向项目文件的对象。金宝app

  • 假设你的codegen命令用于生成MEX函数编码器。常数定义一个常量输入为fi(定点设计师)对象obj

    某些fi对象属性由其他属性启用。当你建造一个fi对象,除非您显式修改它们,否则这些属性将设置为其默认值。在obj,将未启用的一个或多个属性设置为非默认值。看到fi对象属性(定点设计师)

    你转换了这一点codegen命令更改项目文件-toproject选项。您构建项目文件并生成MEX功能。当你通过时obj作为生成的MEX函数的常量输入参数并运行MEX,MEX可能会抛出错误。

    要修复此问题,您必须设置属性obj在将其传递给MEX函数之前未启用其默认值。为此,定义一个newfi对象obj_new

    一个= mat2str (obj);obj_new = eval ();

    通过obj_new作为生成的MEX函数的常量输入。

另请参阅

相关话题