主要内容

配置代码生成和编译设置

通过指定编译类型(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

指定输出类型和语言

要指定编译类型,请执行以下操作:

  • 在工具条的 MATLAB Coder 选项卡中,点击语言并选择输出语言。点击输出类型并选择输出类型。

  • 在命令行中,调用带 -config-lang 选项的 codegen 函数。

  • 设置配置参数语言编译类型

要仅生成源代码而不调用 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++ 代码,编译为可执行文件,并指定包含 main 函数的源文件

请参阅指定 C/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 函数来自定义您的代码生成环境。下表列出了可用的配置对象以及可用于创建配置对象的命令示例。

配置对象描述创建命令示例

coder.MexCodeConfig

指定 MEX 代码生成的参数。

cfg = coder.config("mex");

coder.CodeConfig

如果没有可用的 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");

coder.EmbeddedCodeConfig

如果 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");

配置对象参数初始化为默认值。要修改配置对象来自定义代码生成的环境,请执行以下操作:

  1. 在 MATLAB 工作区中,创建一个配置对象。

  2. 根据需要使用以下方法之一修改配置对象的参数:

  3. 使用 -config 选项调用 codegen 函数。将配置对象指定为 config 参量。

    -config 选项指示 codegen 使用配置对象中的设置为目标 MATLAB 生成代码。例如,在命令行中,创建一个静态库配置对象 cfg。然后,使用 codegen 命令和此配置对象为 MATLAB foo 生成代码。

    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/C++ 可执行文件的主函数

  • 在生成 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.mat
load 命令将在 mexcfg.mat 中定义的对象加载到 MATLAB 工作区。

另请参阅

| | |

主题

外部网站