目录
配置编译设置
指定编译类型
编译类型
MATLAB® Coder™ 可以生成以下输出类型的代码:
-
MEX 函数
-
独立 C/C++ 代码
-
独立 C/C++ 代码并将其编译为静态库
-
独立 C/C++ 代码并将其编译为动态链接库
-
独立 C/C++ 代码并将其编译为可执行文件
注意:生成可执行文件时,必须提供包含 main 函数的 C/C++ 文件,如指定 C/C++ 可执行文件的主函数中所述。
生成的文件的位置
默认情况下,MATLAB Coder 根据输出类型在输出文件夹中生成文件。
注意:每次 MATLAB Coder 为相同的代码或工程生成相同类型的输出时,都会删除上一次编译生成的文件。如果要保留某次编译生成的文件,请在开始新的编译之前将这些文件复制到其他位置。
使用 MATLAB Coder App 指定编译类型
-
要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头
。
-
将 Build type 设置为以下项之一。
“Source Code”
“MEX”
“Static Library”
“Dynamic Library”
“Executable”
如果选择 “Source Code”,MATLAB Coder 将不会调用 make 命令,也不会生成编译的目标代码。如果在修改 MATLAB 代码和生成 C/C++ 代码之间进行迭代并且要检查生成的代码,此选项可以节省时间。此选项等同于选中了 Generate code only 框的 “Static Library”。
代码生成对 MEX 函数和其他编译类型使用不同的配置参数集。当在 “MEX Function” 和 “Source”、“Static Library”、“Dynamic Library” 或 “Executable” 之间切换输出类型时,请验证这些设置。
某些配置参数与 MEX 和独立代码生成相关。如果在输出类型为 “MEX Function” 时启用这些参数中的任何参数,并且您要在 C/C++ 代码生成中也使用相同的设置,则必须为 “C/C++ Static Library”、“C/C++ Dynamic Library” 和 “C/C++ Executable” 再次启用它。
在命令行中指定编译类型
使用 -config 选项调用 codegen。例如,假设有不需要输入参数的主函数 foo。下表显示在编译 foo 时如何指定不同输出类型。如果主函数有输入参数,则必须指定这些输入。
注意:C 语言是使用 MATLAB Coder 生成代码的默认语言。要生成 C++ 代码,可以参考指定用于代码生成的语言。
要生成: | 使用以下命令: |
---|---|
MEX 函数(使用默认代码生成选项) | |
MEX 函数(指定代码生成选项) | |
独立 C/C++ 代码并将其编译为库(使用默认代码生成选项) | |
独立 C/C++ 代码并将其编译为库(指定代码生成选项) | |
独立 C/C++ 代码并将其编译为可执行文件(使用默认代码生成选项并在命令行中指定 main.c 文件) | 注意:必须指定 main 函数才能生成 C/C++ 可执行文件。请查阅指定 C/C++ 可执行文件的主函数 |
独立 C/C++ 代码并将其编译为可执行文件(指定代码生成选项) | 注意:必须指定 main 函数才能生成 C/C++ 可执行文件。请查阅指定 C/C++ 可执行文件的主函数 |
指定用于代码生成的语言
-
使用 MATLAB Coder App 指定语言使用 MATLAB Coder App 指定语言
-
使用命令行界面指定语言使用命令行界面指定语言
MATLAB Coder 可以生成 C 或 C++ 库和可执行文件。C 是默认语言。可以从工程设置对话框或命令行显式指定语言。
使用 MATLAB Coder App 指定语言
-
要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头
。
-
将 Language 设置为 “C” 或 “C++”。
注意:如果指定
C++
,MATLAB Coder 会将 C 代码包装到 .cpp 文件中。您可以使用 C++ 编译器并与外部 C++ 应用程序对接。MATLAB Coder 不生成 C++ 类。
使用命令行界面指定语言
-
为目标语言选择合适的编译器。
-
创建用于代码生成的配置对象。例如,对于库,请使用:
cfg = coder.config('lib');
-
将 TargetLang 属性设置为 'C' 或 'C++'。例如:
cfg.TargetLang = 'C++';
注意:如果指定 C++,MATLAB Coder 会将 C 代码封装到 .cpp 文件中。然后,可以使用 C++ 编译器并与外部 C++ 应用程序对接。MATLAB Coder 不生成 C++ 类。
另请参阅
-
使用配置对象使用配置对象
-
设置 C 或 C++ 编译器
指定输出文件名
使用 MATLAB Coder App 指定输出文件名
-
要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头
。
-
在 Output file name 字段中,输入文件名。
注意:文件名中不能包含空格。
默认情况下,如果第一个入口 MATLAB 文件的名称为 fcn1,则输出文件名为:
-
fcn1(对于 C/C++ 库和可执行文件)。
-
fcn1_mex(对于 MEX 函数)。
默认情况下,MATLAB Coder 在文件夹 project_folder/codegen/target/fcn1 中生成文件:
-
project_folder 是您的当前工程文件夹
-
target 是:
-
mex(对于 MEX 函数)
-
lib(对于静态 C/C++ 库)
-
dll(对于动态 C/C++ 库)
-
exe(对于 C/C++ 可执行文件)
-
命令行替代方法
使用 codegen 函数和 -o 选项。
指定输出文件位置
使用 MATLAB Coder App 指定输出文件位置
输出文件位置不能包含:
-
空格(在某些操作系统配置中,空格可能导致代码生成失败)。
-
制表符
-
\、$、#、*、?
-
非 7 位 ASCII 字符,如日文字符。
-
要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头
。
-
将 Build type 设置为 “Source Code”、“Static Library”、“Dynamic Library” 或 “Executable”(取决于您的具体要求)。
-
点击 More settings。
-
点击 Paths 选项卡。
Build folder 字段的默认设置为 “A subfolder of the project folder”。默认情况下,MATLAB Coder 在文件夹 project_folder/codegen/target/fcn1 中生成文件:
-
fcn1 是按字母顺序排列的第一个入口文件的名称。
-
target 是:
-
mex(对于 MEX 函数)
-
lib(对于静态 C/C++ 库)
-
dll(对于动态链接的 C/C++ 库)
-
exe(对于 C/C++ 可执行文件)
-
-
-
要更改输出位置,您可以使用下列方法之一:
-
将 Build Folder 设置为 “A subfolder of the current MATLAB working folder”
MATLAB Coder 将在 MATLAB_working_folder/codegen/target/fcn1 文件夹中生成文件
-
将 Build Folder 设置为 “Specified folder”。在 Build folder name 字段中,提供文件夹的路径。
-
命令行替代方法
使用 codegen 函数和 -d 选项。
参数设定方法
如果您使用 | 使用 | 详细信息 |
---|---|---|
MATLAB Coder App | 工程设置对话框。 | 指定编译配置参数 MATLAB Coder App |
codegen(在命令行中)并希望指定一些参数 | 配置对象 | 使用配置对象在命令行中指定编译配置参数 |
codegen(在编译脚本中) | ||
codegen(在命令行中)并希望指定许多参数 | 配置对象对话框 | 使用对话框在命令行中指定编译配置参数 |
指定编译配置参数
-
指定编译配置参数 MATLAB Coder App
-
使用配置对象在命令行中指定编译配置参数
-
使用对话框在命令行中指定编译配置参数
可以从 MATLAB Coder 工程设置对话框、命令行或配置对象对话框指定编译配置参数。
指定编译配置参数 MATLAB Coder App
-
要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头
。
-
将 Build type 设置为 “Source Code”、“Static Library”、“Dynamic Library” 或 “Executable”(取决于您的具体要求)。
-
点击 More settings。
工程设置对话框提供适用于选择的输出类型的配置参数集。代码生成对 MEX 函数和其他编译类型使用不同的配置参数集。当在 “MEX Function” 和 “Source Code”、“Static Library”、“Dynamic Library” 或 “Executable” 之间切换输出类型时,请验证这些设置。
某些配置参数与 MEX 和独立代码生成相关。如果在输出类型为 “MEX Function” 时启用这些参数中的任何参数,并且要在 C/C++ 代码生成中也使用相同的设置,则必须为 “C/C++ Static Library”、“C/C++ Dynamic Library” 和 “C/C++ Executable” 再次启用它。
-
根据需要修改参数。有关选项卡上的参数的详细信息,请点击 Help。
对参数设置的更改会立即生效。
使用配置对象在命令行中指定编译配置参数
配置对象的类型. codegen 函数使用配置对象来自定义您的代码生成环境。下表列出了可用的配置对象。
配置对象 | 说明 |
---|---|
coder.CodeConfig | 如果没有可用的 Embedded Coder® 许可证或禁用了 Embedded Coder 许可证,请指定 C/C++ 库或可执行文件生成的参数。 |
coder.EmbeddedCodeConfig | 如果 Embedded Coder 许可证可用,请指定 C/C++ 库或可执行文件生成的参数。 |
coder.HardwareImplementation | 指定目标硬件实现的参数。如果未指定,codegen 会生成与 MATLAB 主机兼容的代码。 |
coder.MexCodeConfig | 指定 MEX 代码生成的参数。 |
使用配置对象. 要使用配置对象来自定义代码生成的环境,请执行以下操作:
-
在 MATLAB 工作区中,定义配置对象变量,如创建配置对象中所述。
例如,要生成用于 C 静态库生成的配置对象,请执行以下操作:
cfg = coder.config('lib'); % Returns a coder.CodeConfig object if no % Embedded Coder license available. % Otherwise, returns a coder.EmbeddedCodeConfig object.
-
根据需要使用以下方法之一修改配置对象的参数:
-
交互式命令,如使用配置对象在命令行中指定编译配置参数中所述
-
对话框,如使用对话框在命令行中指定编译配置参数中所述
-
-
使用 -config 选项调用 codegen 函数。将配置对象指定为其参数。
-config 选项会根据配置属性值,指示 codegen 为目标生成代码。在以下示例中,codegen 基于在第一步中定义的代码生成配置对象 cfg 的参数,从 MATLAB 函数 foo 生成 C 静态库:
codegen -config cfg foo
-config 选项指定要编译的输出的类型 - 在本例中为 C 静态库。
创建配置对象. 您可以在 MATLAB 工作区中定义配置对象。
要创建... | 使用如下命令... |
---|---|
MEX 配置对象 coder.MexCodeConfig | |
用于生成独立 C/C++ 库或可执行文件的代码生成配置对象 coder.CodeConfig | 注意 如果 Embedded Coder 许可证可用,请创建一个 coder.EmbeddedCodeConfig 对象。 如果使用并发许可证,要禁用 Embedded Coder 许可证的签出,请使用以下命令之一: |
用于为嵌入式目标生成独立 C/C++ 库或可执行文件的代码生成配置对象 coder.EmbeddedCodeConfig | 注意:需要提供 Embedded Coder 许可证;否则请创建 coder.CodeConfig 对象。 |
硬件实现配置对象 coder.HardwareImplementation | hwcfg = coder.HardwareImplementation |
每个配置对象都附带一组参数,初始化为默认值。可以更改这些设置,如使用圆点表示法在命令行中修改配置对象中所述。
使用圆点表示法在命令行中修改配置对象. 您可以使用圆点表示法一次修改一个配置对象参数的值。请使用以下语法:
configuration_object.property = value
圆点表示法使用赋值语句来修改配置对象属性:
-
要在 C/C++ 代码生成期间指定 main 函数,请执行以下操作:
cfg = coder.config('exe'); cfg.CustomInclude = 'c:\myfiles'; cfg.CustomSource = 'main.c'; codegen -config cfg foo
-
要在生成 C/C++ 静态库后自动生成并启动代码生成报告,请执行以下操作:
cfg = coder.config('lib'); cfg.GenerateReport= true; cfg.LaunchReport = true; codegen -config cfg foo
保存配置对象. 配置对象不会在 MATLAB 会话之间自动保留。请使用以下方法之一保留设置:
将配置对象保存到 MAT 文件,然后在下一个会话中加载该 MAT 文件
例如,假设您在 MATLAB 工作区中创建和自定义了一个 MEX 配置对象 mexcfg。要保存该配置对象,请在 MATLAB 提示符下输入:
save mexcfg.mat mexcfg
save 命令将 mexcfg 保存到当前文件夹中的文件 mexcfg.mat。
要在新 MATLAB 会话中恢复 mexcfg,请在 MATLAB 提示符下输入:
load mexcfg.mat
load 命令将在 mexcfg.mat 中定义的对象加载到 MATLAB 工作区。
编写用于创建配置对象并设置其属性的脚本。
无论何时需要再次使用该配置对象,只需重新运行该脚本即可。
使用对话框在命令行中指定编译配置参数
在创建配置对象后,可以使用配置参数对话框修改对象的属性。