配置代码生成和编译设置
通过指定编译类型(MEX、lib、dll 或 exe)和语言(C 或 C++)来配置 MATLAB® Coder™ 软件。使用其他设置可以指定生成代码的编译位置,应用特定于目标的优化,启用可变大小支持,在生成代码中包括注释,以及应用其他自定义设置。您可以在命令行或使用 MATLAB Coder 来修改代码生成和编译设置。
编译类型和语言
可用的编译类型和语言
MATLAB Coder 软件可以生成以下类型的编译:
C/C++ MEX 函数
独立的 C/C++ 代码,仅源代码
独立的 C/C++ 代码,编译为静态库
独立的 C/C++ 代码,编译为动态链接库
独立的 C/C++ 代码,编译为可执行文件
C 语言是使用 MATLAB Coder 软件生成代码的默认语言。要生成 C++ 代码,您必须在 MATLAB Coder 或命令行中显式指定代码生成语言。MATLAB Coder 软件将自动查找并使用支持的已安装编译器。要更改默认编译器,请参阅更改默认编译器。
默认情况下,存储代码生成器生成的代码的文件夹由输出类型确定。每次代码生成器为相同的入口函数或 MATLAB Coder 工程生成相同类型的输出时,它都会覆盖上次编译的文件。要保留某次编译生成的文件,请在开始新的编译之前将这些文件复制到其他位置。或者,更改生成的文件的名称或位置。请参阅Generated Files and Locations。
指定输出类型和语言
要指定编译类型,请执行以下操作:
要仅生成源代码而不调用 make 命令且不生成编译的目标代码,请使用以下方法之一:
在工具条的 MATLAB Coder 选项卡中,点击生成代码。
在命令行中,使用带
-c选项的codegen。设置配置参数仅生成代码。
如果您在修改 MATLAB 代码和生成 C/C++ 代码之间进行迭代并且要检查生成的代码,此选项可以节省时间。如果想用自己的编译器编译生成的代码,也可以使用此选项。
下表显示如何使用 codegen 命令为 MATLAB 函数 foo 生成各种不同类型的 C 或 C++ 编译。
| 要生成的编译类型 | 命令 |
|---|---|
| C MEX 函数 | codegen foo
|
| 独立的 C++ 代码,编译为静态库;仅生成源代码 | codegen -config:lib -lang:c++ -c foo |
| 独立的 C 代码,编译为动态链接库 | codegen -config:dll foo |
独立的 C++ 代码,编译为可执行文件,并指定包含 | codegen -config:exe main.cpp -lang:c++ foo |
指定其他编译配置设置
除了编译类型和语言之外,您还可以在命令行或使用配置对象对话框指定 MATLAB Coder 中的其他编译配置设置。使用下表确定要使用的设定方法。
| 如果您使用 | 使用 | 详细信息 |
|---|---|---|
| MATLAB Coder | 工程设置对话框 | 在 MATLAB Coder 中指定编译配置参数 |
codegen 函数(在命令行中)并希望指定一些参数 | 配置对象 | 使用配置对象在命令行中指定编译配置参数 |
编译脚本中的 codegen 函数 | ||
codegen 函数(在命令行中)并希望指定许多参数 | 配置对象对话框 | Specify Code Configuration Parameters Interactively |
在 MATLAB Coder 中指定编译配置参数
要访问工程编译设置,请在工具条的 MATLAB Coder 选项卡中点击设置以打开“代码生成设置”对话框。“代码生成设置”对话框提供适用于您选择的输出类型的配置参数集。代码生成对 MEX 函数和其他编译类型使用不同的配置参数集。当您切换编译类型时,请验证这些设置。
某些配置参数可同时用于 MEX 代码生成和独立代码生成。如果在编译类型为 MEX 时更改这些参数中的任何参数,并且您要将相同的设置用于独立代码生成,则必须再次设置该参数。
对参数设置的更改会立即生效。
使用配置对象在命令行中指定编译配置参数
使用配置对象和 codegen 函数来自定义您的代码生成环境。下表列出了可用的配置对象以及可用于创建配置对象的命令示例。
| 配置对象 | 描述 | 创建命令示例 |
|---|---|---|
指定 MEX 代码生成的参数。 | cfg = coder.config("mex"); | |
如果没有可用的 Embedded Coder® 许可证或禁用了 Embedded Coder 许可证,请指定 C/C++ 库或可执行文件生成的参数。 | % To generate a static library cfg = coder.config("lib"); % To generate a dynamic library cfg = coder.config("dll") % To generate an executable cfg = coder.config("exe"); | |
如果 Embedded Coder 许可证可用,请指定 C/C++ 库或可执行文件生成的参数。 | % To generate a static library cfg = coder.config("lib"); % To generate a dynamic library cfg = coder.config("dll") % To generate an executable cfg = coder.config("exe"); |
配置对象参数初始化为默认值。要修改配置对象来自定义代码生成的环境,请执行以下操作:
在 MATLAB 工作区中,创建一个配置对象。
根据需要使用以下方法之一修改配置对象的参数:
命令行中的圆点表示法。请参阅使用圆点表示法在命令行中修改配置对象。
使用
-config选项调用codegen函数。将配置对象指定为config参量。-config选项指示codegen使用配置对象中的设置为目标 MATLAB 生成代码。例如,在命令行中,创建一个静态库配置对象cfg。然后,使用codegen命令和此配置对象为 MATLABfoo生成代码。cfg = coder.config("lib"); codegen -config cfg foo
使用圆点表示法在命令行中修改配置对象. 您可以使用圆点表示法一次修改一个配置对象参数的值。圆点表示法语法使用对象变量和属性名称并用点 (.) 连接它们:
object.PropertyName = value
例如:
为 C 代码生成指定
main函数。cfg = coder.config("exe"); cfg.TargetLang = "C"; cfg.CustomInclude = "c:\myfiles"; cfg.CustomSource = "main.c"; codegen -config cfg foo
在生成 C++ 静态库后自动生成并启动代码生成报告。
cfg = coder.config("lib"); cfg.TargetLang = "C++"; cfg.GenerateReport= true; cfg.LaunchReport = true; codegen -config cfg foo
保存配置对象
配置对象不会在 MATLAB 会话之间自动保留。要保留您的设置,请编写脚本来重新创建配置对象或将配置对象保存到 MAT 文件中。
例如,假设您在 MATLAB 工作区中创建和自定义了一个 MEX 配置对象 mexcfg。要保存该配置对象,请在 MATLAB 提示符下输入:
save mexcfg.mat mexcfg
save 命令将 mexcfg 保存到当前文件夹中的文件 mexcfg.mat。要在新 MATLAB 会话中恢复 mexcfg,请在 MATLAB 提示符下输入:
load mexcfg.matload 命令将在 mexcfg.mat 中定义的对象加载到 MATLAB 工作区。另请参阅
codegen | coder.MexCodeConfig | coder.CodeConfig | coder.EmbeddedCodeConfig
主题
- Understand and Control Partitioning of the Generated Code
- Specify Code Configuration Parameters Interactively
- 从 MATLAB 代码生成独立的 C/C++ 可执行文件
- 使用 MATLAB Coder 进行代码生成的概述