• 配置编译设置


    目录

    配置编译设置

    指定编译类型

    指定用于代码生成的语言

    指定输出文件名

    指定输出文件位置

    参数设定方法

    指定编译配置参数


    配置编译设置

    指定编译类型

    编译类型

    MATLAB® Coder™ 可以生成以下输出类型的代码:

    • MEX 函数

    • 独立 C/C++ 代码

    • 独立 C/C++ 代码并将其编译为静态库

    • 独立 C/C++ 代码并将其编译为动态链接库

    • 独立 C/C++ 代码并将其编译为可执行文件

    注意:生成可执行文件时,必须提供包含 main 函数的 C/C++ 文件,如指定 C/C++ 可执行文件的主函数中所述。

    生成的文件的位置

            默认情况下,MATLAB Coder 根据输出类型在输出文件夹中生成文件。

    注意:每次 MATLAB Coder 为相同的代码或工程生成相同类型的输出时,都会删除上一次编译生成的文件。如果要保留某次编译生成的文件,请在开始新的编译之前将这些文件复制到其他位置。

    使用 MATLAB Coder App 指定编译类型

    1. 要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头 。 

    2. 将 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 函数(使用默认代码生成选项)

    codegen foo

    MEX 函数(指定代码生成选项)

    1. cfg = coder.config('mex');
    2. % Set configuration parameters, for example,
    3. % enable a code generation report
    4. cfg.GenerateReport=true;
    5. % Call codegen, passing the configuration
    6. % object
    7. codegen -config cfg foo
    独立 C/C++ 代码并将其编译为库(使用默认代码生成选项)
    codegen -config:lib foo
    独立 C/C++ 代码并将其编译为库(指定代码生成选项)

    1. cfg = coder.config('lib');
    2. % Set configuration parameters, for example,
    3. % enable a code generation report
    4. cfg.GenerateReport=true;
    5. % Call codegen, passing the configuration
    6. % object
    7. codegen -config cfg foo
    独立 C/C++ 代码并将其编译为可执行文件(使用默认代码生成选项并在命令行中指定 main.c 文件)
    codegen -config:exe main.c foo
    注意:​必须指定 main 函数才能生成 C/C++ 可执行文件。请查阅指定 C/C++ 可执行文件的主函数
    
    独立 C/C++ 代码并将其编译为可执行文件(指定代码生成选项)

    1. cfg = coder.config('exe');
    2. % Set configuration parameters, for example,
    3. % specify main file
    4. cfg.CustomSource = 'main.c';
    5. cfg.CustomInclude = 'c:\myfiles';
    6. codegen -config cfg foo

    ​注意:必须指定 main 函数才能生成 C/C++ 可执行文件。请查阅指定 C/C++ 可执行文件的主函数

    指定用于代码生成的语言

            MATLAB Coder 可以生成 C 或 C++ 库和可执行文件。C 是默认语言。可以从工程设置对话框或命令行显式指定语言。

            使用 MATLAB Coder App 指定语言

    1. 要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头 。

    2. 将 Language 设置为 “C” 或 “C++”。

      注意:如果指定 C++,MATLAB Coder 会将 C 代码包装到 .cpp 文件中。您可以使用 C++ 编译器并与外部 C++ 应用程序对接。MATLAB Coder 不生成 C++ 类。

    使用命令行界面指定语言

    1. 为目标语言选择合适的编译器。

    2. 创建用于代码生成的配置对象。例如,对于库,请使用:

      cfg = coder.config('lib');
    3. 将 TargetLang 属性设置为 'C' 或 'C++'。例如:

      cfg.TargetLang = 'C++';

      注意:如果指定 C++,MATLAB Coder 会将 C 代码封装到 .cpp 文件中。然后,可以使用 C++ 编译器并与外部 C++ 应用程序对接。MATLAB Coder 不生成 C++ 类。

    另请参阅

    指定输出文件名

    使用 MATLAB Coder App 指定输出文件名

    1. 要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头 。 

    2. 在 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 字符,如日文字符。

    1. 要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头 。

    2. 将 Build type 设置为 “Source Code”、“Static Library”、“Dynamic Library” 或 “Executable”(取决于您的具体要求)。

    3. 点击 More settings

    4. 点击 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++ 可执行文件)

    5. 要更改输出位置,您可以使用下列方法之一:

      • 将 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

    1. 要打开 Generate 对话框,请在 Generate Code 页上点击 Generate 箭头 

    2. 将 Build type 设置为 “Source Code”、“Static Library”、“Dynamic Library” 或 “Executable”(取决于您的具体要求)。

    3. 点击 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” 再次启用它。

    4. 根据需要修改参数。有关选项卡上的参数的详细信息,请点击 Help

      对参数设置的更改会立即生效。

    使用配置对象在命令行中指定编译配置参数

    配置对象的类型.  codegen 函数使用配置对象来自定义您的代码生成环境。下表列出了可用的配置对象。

    配置对象说明

    coder.CodeConfig

    如果没有可用的 Embedded Coder® 许可证或禁用了 Embedded Coder 许可证,请指定 C/C++ 库或可执行文件生成的参数。

    coder.EmbeddedCodeConfig

    如果 Embedded Coder 许可证可用,请指定 C/C++ 库或可执行文件生成的参数。

    coder.HardwareImplementation

    指定目标硬件实现的参数。如果未指定,codegen 会生成与 MATLAB 主机兼容的代码。

    coder.MexCodeConfig

    指定 MEX 代码生成的参数。

    使用配置对象.  要使用配置对象来自定义代码生成的环境,请执行以下操作:

    1. ​在 MATLAB 工作区中,定义配置对象变量,如创建配置对象中所述。

      例如,要生成用于 C 静态库生成的配置对象,请执行以下操作:

      1. cfg = coder.config('lib');
      2. % Returns a coder.CodeConfig object if no
      3. % Embedded Coder license available.
      4. % Otherwise, returns a coder.EmbeddedCodeConfig object.
    2. 根据需要使用以下方法之一修改配置对象的参数:

      • ​交互式命令,如使用配置对象在命令行中指定编译配置参数中所述

      • ​对话框,如使用对话框在命令行中指定编译配置参数中所述

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

      -config 选项会根据配置属性值,指示 codegen 为目标生成代码。在以下示例中,codegen 基于在第一步中定义的代码生成配置对象 cfg 的参数,从 MATLAB 函数 foo 生成 C 静态库:

      codegen -config cfg foo

      ​-config 选项指定要编译的输出的类型 - 在本例中为 C 静态库。

    创建配置对象.  您可以在 MATLAB 工作区中定义配置对象。

    要创建...使用如下命令...
    MEX 配置对象
    coder.MexCodeConfig
    cfg = coder.config('mex');
    用于生成独立 C/C++ 库或可执行文件的代码生成配置对象
    coder.CodeConfig
    1. % To generate a static library
    2. cfg = coder.config('lib');
    3. % To generate a dynamic library
    4. cfg = coder.config('dll')
    5. % To generate an executable
    6. cfg = coder.config('exe');

    注意

    如果 Embedded Coder 许可证可用,请创建一个 coder.EmbeddedCodeConfig 对象。

    如果使用并发许可证,要禁用 Embedded Coder 许可证的签出,请使用以下命令之一:

    1. cfg = coder.config('lib', 'ecoder', false)
    2. cfg = coder.config('dll', 'ecoder', false)
    3. cfg = coder.config('exe', 'ecoder', false)
    用于为嵌入式目标生成独立 C/C++ 库或可执行文件的代码生成配置对象
    coder.EmbeddedCodeConfig
    1. % To generate a static library
    2. cfg = coder.config('lib');
    3. % To generate a dynamic library
    4. cfg = coder.config('dll')
    5. % To generate an executable
    6. cfg = coder.config('exe');

    注意:需要提供 Embedded Coder 许可证;否则请创建 coder.CodeConfig 对象。

    硬件实现配置对象
    coder.HardwareImplementation
    hwcfg = coder.HardwareImplementation

    ​        每个配置对象都附带一组参数,初始化为默认值。可以更改这些设置,如使用圆点表示法在命令行中修改配置对象中所述。​

    使用圆点表示法在命令行中修改配置对象.  您可以使用圆点表示法一次修改一个配置对象参数的值。请使用以下语法:

    configuration_object.property = value

    圆点表示法使用赋值语句来修改配置对象属性:

    • 要在 C/C++ 代码生成期间指定 main 函数,请执行以下操作:

      1. cfg = coder.config('exe');
      2. cfg.CustomInclude = 'c:\myfiles';
      3. cfg.CustomSource = 'main.c';
      4. codegen -config cfg foo
    • 要在生成 C/C++ 静态库后自动生成并启动代码生成报告,请执行以下操作:

      1. cfg = coder.config('lib');
      2. cfg.GenerateReport= true;
      3. cfg.LaunchReport = true;
      4. 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 工作区。

    编写用于创建配置对象并设置其属性的脚本。

            无论何时需要再次使用该配置对象,只需重新运行该脚本即可。

    使用对话框在命令行中指定编译配置参数

            在创建配置对象后,可以使用配置参数对话框修改对象的属性。

     

  • 相关阅读:
    重生之我要学后端01--后端语言选择和对应框架选择
    深度学习概览
    Filebeat+Kafka+ELK日志分析架构
    aspnetcore中aop的实现
    win10如何开启远程桌面连接
    TCP/IP 测试题(五)
    Linux 之内核详解及编译
    react知识点
    【Vue/React】浅谈Vue/React中的Diff算法以及key的作用和index不适合作为key的原因
    Educational Codeforces Round 134 (Rated for Div. 2) A~D
  • 原文地址:https://blog.csdn.net/jk_101/article/details/114115227