文档

coder.CodeConfig

配置参数C / c++代码生成MATLAB代码

描述

一个coder.CodeConfig对象包含的配置参数codegen用于生成一个静态库,动态链接库,或一个可执行程序。通过对象的codegen函数使用配置选择。

创建

语法

cfg = coder.config (build_type)
cfg = coder.config (build_type,'ecoder', false)

描述

例子

cfg = coder.config (build_type)创建一个指定构建代码生成配置对象类型,它可以是一个静态库,动态链接库,或一个可执行程序。如果嵌入式编码器®产品没有安装,它会创建一个coder.CodeConfig对象。否则,它会创建一个coder.EmbeddedCodeConfig对象。

cfg = coder.config (build_type“是”,假)创建一个coder.CodeConfig对象指定的输出类型,即使你有嵌入式安装编码器。

输入参数

全部展开

输出构建生成的C / c++代码,在这个表指定为一个值。

价值 描述
“自由” 静态库
“DLL” 动态链接库
EXE” 可执行程序

属性

全部展开

编译器工具链的优化或调试设置,指定为这个表中的值之一。

价值 描述
“加快构建”

优化的构建更短的建立时间。

“快跑”

优化构建可执行程序运行的更快。

“调试”

优化构建进行调试。

“指定”

使CustomToolchainOptions财产的定制设置工具选中的工具链。如果工具链属性设置为“自动定位一个安装工具链”,然后设置BuildConfiguration“指定”变化工具链位于工具链。

代码替换为生成的代码库,指定为这个表中的值之一:

价值 描述
“没有”

这个值是默认值。

不使用一个代码替换库。

命名的代码替换库

生成调用一个特定的平台,编译器,或标准代码替换库。命名的列表库取决于:

  • 安装包的支持。万博1manbetx

  • 系统目标文件,语言标准的数学库,配置和设备供应商。

  • 你是否创建和注册代码替换库,使用嵌入的编码器®产品。

兼容库依赖于这些参数:

  • TargetLang

  • TargetLangStandard

  • ProdHWDeviceType在硬件实现配置对象。

嵌入式编码器提供了更多的库和能力来创建和使用自定义代码替换库。

MATLAB®编码器™生成的最小集合# include选择所需的头文件代码语句替换库。

设置这个参数之前,确认您的编译器支持您想要使用的库。万博1manbetx如果你选择一个参数值,编译器不支持,会发生编译器错误。万博1manbetx

请注意

MATLAB编码器软件不支持TLC回调。万博1manbetx

最大数量的专门化的编译时递归函数,指定为一个正整数。在MATLAB代码不允许递归,集CompileTimeRecursionLimit为0。默认编译时递归限制是大到足以让最需要这种类型的递归的递归函数。如果代码生成失败,因为编译时递归限制,和你想要编译时递归,试图增加的极限。另外,改变你的MATLAB代码,代码生成器使用运行时递归。看到编译时递归限制达到

最大数量的恒定文件夹执行的指令。在某些情况下,代码生成需要特定的指令是常数。如果constant-folded常数合并之前停止这些指令,代码生成失败。在这种情况下,增加的价值ConstantFoldingTimeout

看到MATLAB编码器优化生成的代码

回调类FFTW库调用的代码生成的FFT函数在MATLAB代码中,指定为一个特征向量。

提高FFT函数的执行速度,代码生成器生成调用FFTW库,您指定的回调类。如果该参数为空,代码生成器使用自己的FFT算法函数,而不是调用FFTW图书馆。

看到加快快速傅里叶变换使用FFTW库调用生成的独立的代码

定制代码出现顶部附近的每一个C / c++头文件从MATLAB代码生成的,指定为一个特征向量。

包括文件夹添加到包括当编译生成的代码路径。指定的列表包括文件夹作为特征向量。

如果您的列表包括Windows®包含空格的路径,附上每个实例在双引号,例如:

“C: \项目“C: \自定义文件”

自定义代码包括在生成的初始化函数,指定为一个特征向量。

回调类LAPACK库调用的代码生成的某些线性代数函数在MATLAB代码中,指定为一个特征向量。

如果你指定一个LAPACK调课,对于某些线性代数函数,代码生成器产生LAPACK调用使用LAPACKE C接口LAPACK图书馆。回调类提供LAPACKE头文件的名称和链接到你所需的信息LAPACK图书馆。如果该参数为空,线性代数函数的代码生成器生成的代码来代替LAPACK电话。

看到加快生成独立的代码通过使用线性代数LAPACK调用

静态库文件和生成的代码链接,指定为一个特征向量。在特征向量,单独的库文件名称空间。

源文件和生成的代码编译和链接,指定为一个特征向量。在特征向量,单独的源文件名称空间。

构建过程首先查找源文件在当前文件夹,然后在您指定的包括文件夹CustomInclude

如果源文件名称相同的发生在多个文件夹搜索路径,构建过程可能使用一个不同的文件比指定的文件。例如,假设您指定foo.cpp作为一个源文件。如果foo.cfoo.cpp在搜索路径的文件夹,你不能确定是否构建过程使用foo.cfoo.cpp

指定生成的代码出现顶部附近。c. cpp文件以外的任何功能。指定代码作为一个特征向量。

没有指定一个C静态函数定义。

出现在终止函数所生成的代码,指定为一个特征向量。

自定义设置工具选择的工具链,指定为一个单元阵列。

依赖关系:

  • 工具链属性决定了哪些工具和选项出现在单元阵列。

  • 设置BuildConfiguration财产指定使CustomToolchainOptions

首先,获取当前的设置。例如:

cfg = coder.config (“自由”);cfg.BuildConfiguration =“指定”;选择= cfg.CustomToolchainOptions

然后,编辑中的值选择

这些价值观源于工具链定义文件和第三方编译器选项。看到自定义工具链登记

数据类型替换在生成的代码中,指定为这个表中的值之一。

价值 描述
“CBuiltIn”

这个值是默认值。

C代码生成器使用内置的数据类型。

“CoderTypeDefs” 代码生成器使用预先定义的数据类型rtwtypes.h

对象描述,指定为一个特征向量。

动态内存分配模式,指定为这个表中的值之一。

价值 描述
“阈值”

这个值是默认值。

代码生成器上动态分配内存堆适应可变数组的大小(以字节为单位)大于或等于DynamicMemoryAllocationThreshold

“AllVariableSizeArrays” 代码生成器动态所有适应可变数组在堆上分配内存。
“关闭”

静态代码生成器为适应可变数组分配内存的堆栈。

无界适应可变数组需要动态内存分配。

依赖关系:

  • EnableVariableSizing支持这个参数。

  • 设置这个DynamicMemoryAllocation“阈值”使DynamicMemoryAllocationThreshold参数。

看到为适应可变数据生成代码

动态内存分配的适应可变数组大小阈值,指定为一个正整数。代码生成器使用动态内存分配来适应可变数组的大小(以字节为单位)大于或等于阈值。

依赖:

  • 设置DynamicMemoryAllocation“阈值”支持这个参数。

看到为适应可变数据生成代码

非本征函数调用,自动指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

代码生成器将一些常见的可视化功能视为外在功能。你不需要将这些函数声明为外部使用coder.extrinsic。此功能可以减少代码的时间,你花适合代码生成。

代码生成器不治疗常见可视化函数作为外在功能,除非你宣布他们为外部使用coder.extrinsic

一些常见的可视化功能情节,disp,。看到非本征函数

memcpy优化,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

如果可能的话,代码生成器使用memcpy优化。连续优化的代码复制数组元素memcpy优化替换的代码memcpy调用。当元素的数量复制在编译时是已知的,代码生成器使用MemcpyThreshold属性来决定是否使用优化。看到memcpy优化

不使用代码生成器memcpy优化。

并行化的parfor循环,在这个表指定为一个值。

价值 描述
真正的

这个值是默认值。

如果可能的话,代码生成器使用OpenMP库生产循环迭代并行地运行。

代码生成器处理parfor循环,循环。

看到parfor

使用OpenMP图书馆与即时(JIT)编译不兼容。如果EnableJITEnableOpenMP真正的,代码生成器使用JIT编译和治疗parfor循环,循环。

运行时递归的支持,在这个表指定为一个值万博1manbetx。

价值 描述
真正的

这个值是默认值。

递归函数都可以在生成的代码中。

递归函数是不允许在生成的代码。

一些编码标准,如MISRA®,不允许递归。增加的可能性符合MISRA - C生成代码®,设置EnableRuntimeRecursion

如果你需要运行时递归和MATLAB代码EnableRuntimeRecursion,代码生成失败。

看到递归函数的代码生成

适应可变数组的支持,在这个表指定为一个值万博1manbetx。

价值 描述
真正的

这个值是默认值。

适应可变数组允许代码生成。

适应可变数组不允许代码生成。

依赖:

  • 使动态内存分配

看到为适应可变数组生成代码

文件分区模式指定为这个表中的值之一。

价值 描述
“MapMFileToCFile”

这个值是默认值。

代码生成器生成单独的C / c++文件为每个MATLAB语言文件。

“SingleFile” 代码生成器产生单个文件的C / c++函数映射到你的MATLAB函数入口点。代码生成器生成单独的C / c++文件的实用函数。

看到MATLAB编码器分区生成的代码如何

代的源代码,在这个表指定为一个值。

价值 描述

这个值是默认值。

代码生成器生成C / c++源代码和构建对象代码。

真正的

代码生成器生成C / c++源代码,但不调用make命令或构建对象代码。当你修改MATLAB代码之间的迭代生成C / c++代码,生成唯一的代码可以节省时间。

评论在生成的代码中,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

代码生成器的地方评论在生成的代码中。

代码生成器不评论在生成的代码中。

示例生成C / c++的主要文件,指定为这个表中的值之一。

价值 描述
“GenerateCodeOnly”

这个值是默认值。

代码生成器生成一个示例C / c++主要功能但不编译它。

“DoNotGenerate”

代码生成器并不生成一个示例C / c++的主要功能。

“GenerateCodeAndCompile”

代码生成器生成一个示例C / c++主要功能并编译它创建一个测试执行。这个可执行不返回输出。

如果GenCodeOnly参数是真正的,代码生成器并不编译C / c++的主要功能。

主要功能是一个例子一个模板来帮助你编写一个C / c++的主要功能,调用生成的C / c++代码。看到将生成的代码使用一个例子的主要功能

Makefile代在构建过程中,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

代码生成器生成一个makefile在构建过程中。

代码生成器并不在构建过程中生成一个makefile。指定post-code-generation处理指令,包括编译和链接,在一个post-code-generation命令。看到定制Post-Code-Generation构建过程

代码生成报告,指定为这个表中的值之一。

价值 描述

这个值是默认值。

代码生成器生成一个报告只有在发生错误或警告消息,或者如果你设置LaunchReport真正的

真正的 代码生成器生成的代码生成报告。

硬件实现对象指定特定于硬件的配置参数C / c++代码生成。coder.config创建一个coder.CodeConfig对象的HardwareImplementation属性设置为一个coder.HardwareImplementation对象与MATLAB主机默认参数值。

显示潜在的行布局效率问题,指定为这个表中的值之一。

价值 描述
真正的

代码生成的报告上显示了潜在的效率问题,由于行布局。(该值是默认值)。

代码生成报告并没有显示阵列布局有关的问题。

看到代码行阵列布局设计

转让和双零浮动memset,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

如果可能的话,代码生成器使用memset优化连续浮点零分配给数组元素。连续分配数组元素memset优化使用memset调用。当元素的数量分配在编译时是已知的,代码生成器使用MemcpyThreshold属性来决定是否使用优化。看到memset优化

不使用代码生成器memset优化连续漂浮和双零分配给数组元素。

堆栈大小限制为内联函数,指定为一个正整数。堆栈大小限制决定的数量为内联函数的局部变量分配堆栈空间。

指定堆栈空间的限制约束的数量允许内联。超行功能,堆栈空间函数中的局部变量是函数返回时释放。然而,内联函数的堆栈空间仍然被局部变量即使函数返回。

这个功能对于嵌入式处理器尤为重要,堆栈的大小可以是有限的。

看到控制内联

内联函数大小阈值,指定为一个正整数。

除非其他条件防止内联,代码生成器内联函数小于阈值。

函数大小测量作为一个抽象的指令,而不是真正的MATLAB或指令目标处理器的指令。获得你想要的内联行为,与阈值实验。例如,如果默认阈值导致内联的函数和代大量的C代码,调整阈值,直到你满意的大小,生成的代码。

看到控制内联

最大尺寸的内联函数后,指定为一个正整数。如果内联之后,调用函数的大小超过了InlineThresholdMax,那么代码生成器不内联调用的函数。

函数大小测量作为一个抽象的指令,而不是真正的MATLAB或指令目标处理器的指令。获得你想要的内联行为,与阈值实验。例如,如果默认阈值导致内联的函数和代大量的C代码,调整阈值,直到你满意的大小,生成的代码。

看到控制内联

指定的代码生成报告,自动打开这个表中的值。

价值 描述

这个值是默认值。

如果发生错误或警告,或者GenerateReport真正的代码生成器生成一个报告,但是不打开报告。

真正的 代码生成器产生并打开一个代码生成报告。

包含注释的MATLAB源代码生成的代码,在这个表指定为一个值。

价值 描述

这个值是默认值。

代码生成器不插入评论的MATLAB源代码生成的代码。代码生成器函数中不包括MATLAB函数签名横幅。

真正的

代码生成器插入MATLAB源代码生成的代码的注释。立即可追溯性标记之前的每一行源代码。可追溯性标记能帮助你找到相应的MATLAB源代码。看到跟踪生成的C / c++代码的MATLAB源代码

如果你有嵌入式编码,代码生成报告,可追溯性标记源代码的链接。

代码生成器还包括MATLAB函数签名的横幅。

依赖:

  • GenerateComments支持这个参数。

看到跟踪生成的C / c++代码的MATLAB源代码

最大字符数生成的标识符,指定为一个正整数的范围[31,256]。这个属性适用于生成函数,类型定义,变量名。避免截断目标标识符的C编译器,指定一个值相匹配的目标C编译器的最大标识符长度。

这个属性并不适用于出口标识符,如为入口点函数生成的名称或emxArray API函数。如果一个出口标识符的长度超过了最大标识符长度的目标C编译器,目标C编译器截断导出的标识符。

最小大小,字节,memcpy或memset优化,指定为一个正整数。

连续复制数组元素的优化生成的代码,代码生成器试图替换的代码memcpy调用。生成的代码优化连续文字常量赋值给数组元素,代码生成器试图替换的代码memset调用。

的字节数是数组元素复制或分配的数量乘以所需的字节数C / c++的数据类型。

如果复制或分配的元素数量是可变的(在编译时不知道),代码生成器忽略了MemcpyThreshold财产。

看到memcpy优化memset优化

多实例,可重入的代码,在这个表指定为一个值。

价值 描述

这个值是默认值。

代码生成器不能产生多实例、可重入的代码。

真正的

代码生成器产生可重用,多实例的代码是可重入的。

看到可重入代码

对象名称、指定为一个特征向量。

输出构建生成的C / c++代码,在这个表指定为一个值。

价值 描述
“自由” 静态库
“DLL” 动态链接库
EXE” 可执行程序

通过结构参照入口点函数,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

生成的代码通过引用传递结构,这样可以减少内存使用和执行时间通过最小化副本入口点函数的参数的数量界限。

请注意

一个入口点函数写入一个字段的结构参数覆盖输入值。

生成的代码按值传递结构。

这个参数只适用于入口点函数。

看到通过结构参数通过引用或值在生成的代码

墨西哥人后命令自定义构建处理函数生成codegen,指定为一个特征向量。

看到定制Post-Code-Generation构建过程

生成的代码使用n维索引、指定为这个表中的值之一。

价值 描述

使用一维索引生成代码。(该值是默认值)。

真正的 使用n维索引生成代码。

看到使用n维索引生成代码

变量名称保留在生成的代码中,指定为这个表中的值之一。

价值 描述
“没有”

这个值是默认值。

代码生成器没有保存任何变量的名字。它可以重用任何变量,变量满足要求重用。

如果你的代码使用大型结构或数组,设置PreserveVariableNames“没有”可以减少内存使用量或提高执行速度。

“用户名”

代码生成器保留名称对应MATLAB代码中定义的变量。它没有你的变量名替换为另一个名字,不使用你的名字为另一个变量。为了提高可读性,集PreserveVariableNames“用户名”。然后,您可以更容易地跟踪生成的代码中的变量回MATLAB代码中的变量。

设置PreserveVariableNames“用户名”不阻止删除变量的优化生成的代码或阻止C / c++编译器重用生成的二进制代码中的变量。

“所有”

保留所有变量名。这个参数值禁用变量重用。它只用于测试或调试,生产代码。

看到在生成的代码保存变量名

潜在的差异报告,指定为这个表中的值之一:

价值 描述
真正的 代码生成器生成的代码报告潜在的行为差异和MATLAB代码。潜在的差异在选项卡列出代码生成报告。潜在的区别是不同的,发生在运行时只在特定条件下。
代码生成器不报告潜在的差异。

看到潜在的差异报告

名称,代码生成器函数或变量不能使用,指定为一个特征向量。

生成的代码使用行阵列布局,指定为这个表中的值之一。

价值 描述

生成代码,使用数组列为主的布局。(该值是默认值)。

真正的 生成代码,使用行阵列布局。

看到生成代码,使用行阵列布局

运行时错误检测和报告在生成的代码中,指定为这个表中的值之一。

价值 描述

这个值是默认值。

生成的代码不检查错误,如禁止入内的索引数组。

真正的

生成的代码检查错误,例如禁止入内的索引数组。

错误报告的软件使用写错误消息stderr。它使用中止终止应用程序。如果中止不可用,您必须提供它们。的中止突然终止程序的函数。如果你的系统支持的信号,你可以万博1manbetx赶上中止信号(SIGABRT),这样你可以控制程序终止。

错误消息都是英文的。

看到运行时错误检测和报告在独立的C / c++代码

整数溢出的支持,在这个表指定为一个万博1manbetx值。

价值 描述
真正的

这个值是默认值。

代码生成器生成的代码来支持整数溢出。万博1manbetx溢出的最小值或最大值,数据类型可以表示。

溢出行为取决于您的目标C编译器。在C标准,整数溢出的行为是未定义的。然而,大多数C编译器包装上溢出。

这个参数只适用于MATLAB内置整数类型。它并不适用于双打、单身或定点数据类型。

看到禁用支持整数溢出万博1manbetx或非定形的

最大堆栈使用每个应用程序,以字节为单位,指定为一个正整数。设定一个限制,低于可用的堆栈大小。否则,可能发生运行时堆栈溢出。C编译器检测和报告堆栈溢出。

看到禁用支持整数溢出万博1manbetx或非定形的

万博1manbetx支持非限定的值,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

代码生成器生成的代码来支持非限定的值(万博1manbetx)。

代码生成器不能产生代码来支持非限定的值。万博1manbetx

看到禁用支持整数溢出万博1manbetx或非定形的

语言生成的代码中使用,指定为“C”“c++”。如果指定c++代码生成器将C代码到. cpp文件中,这样您就可以使用一个c++编译器和接口与外部c++应用程序。它不生成c++类。

标准生成的代码使用的数学库,指定为一个特征向量:

  • “C89 /人私下偷偷收藏盒式(ANSI)”

  • “C99 (ISO)”

  • “c++ 03 (ISO)”

代码生成器使用的标准数学库调用数学操作。默认的标准数学库取决于您选择的语言。对于C,默认库“C89 /人私下偷偷收藏盒式(ANSI)”。对于c++,默认库“c++ 03 (ISO)”

看到改变标准数学库

工具链用于构建一个C / c++库或可执行程序,指定为一个特征向量。可用工具链的列表取决于主机平台,并且可以包括您所添加的自定义工具链。如果你不指定工具链,代码生成器将定位安装工具链。

代码生成进度显示,指定为这个表中的值之一。

价值 描述

这个值是默认值。

代码生成器不显示代码生成的进步。

真正的

代码生成器显示代码生成的进展,包括代码生成阶段和编译器输出。

例子

全部折叠

编写一个MATLAB函数可以生成代码。下面的例子使用了函数myadd返回输入的总和。

函数c = myadd (a, b) c = a + b;结束

创建一个配置对象生成独立的C / c++代码(一个静态库,动态链接库,或一个可执行程序)。例如,创建一个配置对象生成一个静态的图书馆。

cfg = coder.config (“自由”);

改变的值属性,您不想使用默认值。例如,使运行时错误检测和报告生成的C / c++代码。

cfg。RuntimeChecks = true;

通过使用生成代码codegen。通过配置对象codegen通过使用配置选择。指定输入参数是标量的两倍。

codegenmyadd配置cfgarg游戏{1}报告

选择功能

使用默认配置参数构建类型“自由”,“DLL”,或EXE”,可以使用codegen选项配置:自由,配置:dll,或配置:exe,分别。然后,您不需要创建并通过一个配置对象codegen

介绍了R2011a

这个主题有帮助吗?