当前位置: 首页 > news >正文

配置编译设置

目录

配置编译设置

指定编译类型

指定用于代码生成的语言

指定输出文件名

指定输出文件位置

参数设定方法

指定编译配置参数


配置编译设置

指定编译类型

编译类型

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 函数(指定代码生成选项)

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

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

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

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

指定用于代码生成的语言

  • 使用 MATLAB Coder App 指定语言使用 MATLAB Coder App 指定语言

  • 使用命令行界面指定语言使用命令行界面指定语言

        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++ 类。

另请参阅

  • 使用配置对象使用配置对象

  • ​设置 C 或 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 静态库生成的配置对象,请执行以下操作:

    cfg = coder.config('lib');
    % Returns a coder.CodeConfig object if no
    % Embedded Coder license available. 
    % 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
% 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 许可证可用,请创建一个 coder.EmbeddedCodeConfig 对象。

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

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

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

cfg = coder.config('exe', 'ecoder', false)
用于为嵌入式目标生成独立 C/C++ 库或可执行文件的代码生成配置对象
coder.EmbeddedCodeConfig
% 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 许可证;否则请创建 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 工作区。

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

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

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

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

 

相关文章:

  • Spyder故障基本解决方案 (包括闪退)-超全版本
  • 第一篇 如何选择深度学习主机
  • MATLAB2016a生成COM组件及调用说明
  • 抖音、饿了么协同作战?
  • springboot设置并获取启动参数
  • PMP_考前冲刺题 二 (3A通过分享)(2022.7)(75题附答案及解析)
  • php毕业论文参考文献计算机毕业设计剧影评|剧评影评系统
  • 《深入理解JAVA虚拟机(第2版)》—— 学习笔记1
  • Idean中的Maven
  • leetcode 17. 电话号码的字母组合
  • 怎样平衡软件质量与时间成本范围的关系?
  • Odoo | 开源ERP,解锁审计和日志记录新玩法
  • c++STL 迭代器失效的三种情况总结
  • cordova 打包android app
  • 【稀里糊涂学Spring MVC】Filter
  • 30秒的PHP代码片段(1)数组 - Array
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • download使用浅析
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 汉诺塔算法
  • 区块链技术特点之去中心化特性
  • 数据科学 第 3 章 11 字符串处理
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小程序01:wepy框架整合iview webapp UI
  • 协程
  • 一个SAP顾问在美国的这些年
  • 字符串匹配基础上
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #QT(一种朴素的计算器实现方法)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (第27天)Oracle 数据泵转换分区表
  • (第二周)效能测试
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (力扣题库)跳跃游戏II(c++)
  • (十五)使用Nexus创建Maven私服
  • (四)Android布局类型(线性布局LinearLayout)
  • (算法)N皇后问题
  • (学习日记)2024.01.19
  • (原)Matlab的svmtrain和svmclassify
  • (转)Linux下编译安装log4cxx
  • (转载)OpenStack Hacker养成指南
  • .“空心村”成因分析及解决对策122344
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .Net6 Api Swagger配置
  • .Net环境下的缓存技术介绍
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET应用架构设计:原则、模式与实践 目录预览
  • @Validated和@Valid校验参数区别
  • [Angular] 笔记 6:ngStyle
  • [ASP]青辰网络考试管理系统NES X3.5