主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

coder.updateBuildInfo

更新 RTW.BuildInfo 编译信息对象

说明

使用 coder.updateBuildInfo 函数通过添加编译器和链接器选项、预处理器宏定义、源文件和包含文件以及预编译的外部库来自定义生成的 C/C++ 源代码的编译过程。

coder.updateBuildInfo('addCompileFlags',options) 将编译器选项添加到编译信息对象中。

示例

coder.updateBuildInfo('addLinkFlags',options) 将链接选项添加到编译信息对象中。

coder.updateBuildInfo('addDefines',options) 将预处理器宏定义添加到编译信息对象中。

coder.updateBuildInfo(___,group)options 分配一个组名称,供以后引用。

coder.updateBuildInfo('addLinkObjects',filename,path) 将文件中的链接对象添加到编译信息对象中。

示例

coder.updateBuildInfo('addLinkObjects',filename,path,priority,precompiled) 指定链接对象是否为预编译对象。

coder.updateBuildInfo('addLinkObjects',filename,path,priority,precompiled,linkonly) 指定对象是在链接之前编译还是仅用于链接。如果要编译对象,它指定该对象是否为预编译对象。

coder.updateBuildInfo(___,group) 为链接对象分配一个组名称,供以后引用。

coder.updateBuildInfo('addNonBuildFiles',filename) 将一个非编译相关文件添加到编译信息对象中。

coder.updateBuildInfo('addSourceFiles',filename) 将一个源文件添加到编译信息对象中。

示例

coder.updateBuildInfo('addIncludeFiles',filename) 将一个包含文件添加到编译信息对象中。

coder.updateBuildInfo(___,path) 从指定的路径添加文件。

coder.updateBuildInfo(___,path,group) 为文件分配一个组名称,以供以后引用。

coder.updateBuildInfo('addSourcePaths',path) 将一个源文件路径添加到编译信息对象。

coder.updateBuildInfo('addIncludePaths',path) 将一个包含文件路径添加到编译信息对象。

示例

coder.updateBuildInfo(___,group) 为路径分配一个组名称,供以后引用。

示例

全部折叠

在函数 func 的代码生成过程中,添加编译器选项 -Zi-Wall

在用于 func 的 MATLAB® 代码中的任意位置,添加以下行:

coder.updateBuildInfo('addCompileFlags','-Zi -Wall');

使用 codegen 命令为 func 生成代码。打开代码生成报告。

codegen -config:lib -launchreport func 

为函数 calc_factorial 生成代码时,将源文件添加到工程编译信息中。

  1. 编写头文件 fact.h,该文件声明 C 函数 factorial

     double factorial(double x);

    fact.h 将作为头文件包含在生成的代码中。这种包含可确保函数在调用之前声明。

    将文件保存在当前文件夹中。

  2. 编写包含 factorial 定义的 C 文件 fact.cfactorial 计算其输入的阶乘。

    #include "fact.h"
          
          double factorial(double x)
          {
              int i;
              double fact = 1.0;
              if (x == 0 || x == 1) {
                 return 1.0;
             } else {
                 for (i = 1; i <= x; i++) {
                     fact *= (double)i;
                 }
                 return fact;
             }
         }
         
    

    fact.c 在代码生成过程中用作源文件。

    将文件保存在当前文件夹中。

  3. 编写使用 coder.ceval 调用外部 C 函数 factorial 的 MATLAB 函数 calc_factorial

    使用 coder.updateBuildInfo 和选项 'addSourceFiles' 将源文件 fact.c 添加到编译信息中。使用 coder.cinclude 在生成的代码中包含头文件 fact.h

    function y = calc_factorial(x) %#codegen
    
      coder.cinclude('fact.h');
      coder.updateBuildInfo('addSourceFiles', 'fact.c');
    
      y = 0;
      y = coder.ceval('factorial', x);
  4. 使用 codegen 命令为 calc_factorial 生成代码。

     codegen -config:dll -launchreport calc_factorial -args 0

在为函数 func 生成代码时,将链接对象 LinkObj.lib 添加到编译信息中。对于此示例,您必须将链接对象 LinkObj.lib 保存在本地文件夹中,例如 c:\Link_Objects

func 的 MATLAB 代码中的任意位置,添加以下行:

libPriority = '';
libPreCompiled = true;
libLinkOnly = true;
libName = 'LinkObj.lib';
libPath = 'c:\Link_Objects';
coder.updateBuildInfo('addLinkObjects', libName, libPath, ...
     libPriority, libPreCompiled, libLinkOnly);

使用 codegen 命令为 func 生成一个 MEX 函数。打开代码生成报告。

codegen -launchreport func 

为函数 adder 生成代码时,向编译信息添加包含路径。包含该路径中存在的头文件 adder.h

当头文件不在当前文件夹中时,请使用以下方法来包含它们:

  1. 编写头文件 mysum.h,其中包含 C 函数 mysum 的声明。

    double mysum(double, double);

    将其保存在本地文件夹中,例如 c:\coder\myheaders

  2. 编写包含函数 mysum 的定义的 C 文件 mysum.c

    #include "mysum.h"
    
    double mysum(double x, double y)
     { 
      return(x+y);
     }
     
    

    将其保存在当前文件夹中。

  3. 编写 MATLAB 函数 adder,它将路径 c:\coder\myheaders 添加到编译信息中。

    使用 coder.cinclude 在生成的代码中包含头文件 mysum.h

    function y = adder(x1, x2) %#codegen
       coder.updateBuildInfo('addIncludePaths','c:\coder\myheaders');
       coder.updateBuildInfo('addSourceFiles','mysum.c'); 
         %Include the source file containing C function definition
       coder.cinclude('mysum.h');
       y = 0;
       if coder.target('MATLAB')
          % This line ensures that the function works in MATLAB 
            y = x1 + x2;
       else
           y = coder.ceval('mysum', x1, x2);
        end
    end
  4. 使用 codegen 命令为 adder 生成代码。

    codegen -config:lib -launchreport adder -args {0,0}

输入参数

全部折叠

编译选项,指定为字符向量或字符串标量。该值必须为编译时常量。

根据前导参量,options 指定要添加到工程编译信息中的相关编译选项。

前导参量options 中的值
'addCompileFlags'编译器选项
'addLinkFlags'链接选项
'addDefines'预处理器宏定义

该函数将选项添加到选项向量的末尾。

示例: coder.updateBuildInfo('addCompileFlags','-Zi -Wall')

用户定义的组的名称,指定为字符向量或字符串标量。该值必须为编译时常量。

group 选项为第二个参量中的参数分配一个组名称。

前导参量第二个参量group 指定的参数
'addCompileFlags'options编译器选项
'addLinkFlags'options链接选项
'addLinkObjects'filename包含可链接对象的文件的名称
'addNonBuildFiles'filename非编译相关文件的名称
'addSourceFiles'filename源文件的名称
'addSourcePaths'path源文件路径的名称

您可以使用 group 执行以下操作:

  • 记录特定参数的使用。

  • 将多个参数作为一个组一起检索或应用。

文件名,指定为字符向量或字符串标量。该值必须为编译时常量。

根据前导参量,filename 指定要添加到工程编译信息中的相关文件。

前导参量filename 指定的文件
'addLinkObjects'包含可链接对象的文件
'addNonBuildFiles'非编译相关文件
'addSourceFiles'源文件

函数将文件名添加到文件名向量的末尾。

示例: coder.updateBuildInfo('addSourceFiles', 'fact.c')

相对路径名称,指定为字符向量或字符串标量。该值必须为编译时常量。

根据前导参量,path 指定要添加到工程编译信息中的相关路径名称。函数将路径添加到路径名称向量的末尾。

前导参量path 指定的路径
'addLinkObjects'可链接对象的路径
'addNonBuildFiles'非编译相关文件的路径
'addSourceFiles', 'addSourcePaths'源文件的路径

相对路径从您在其中生成代码的当前工作文件夹开始。在相对路径名称中,使用 START_DIR 宏引用当前工作文件夹。例如,假设您的源文件 fact.c 包含在 C:\myCode\mySrcDir 中,并且您从 C:\myCode 生成代码。如以下示例所示写入路径:

示例: coder.updateBuildInfo('addSourceFiles','fact.c','$(START_DIR)\mySrcDir')

链接对象的优先级。

仅当添加多个链接对象时,此功能才适用。当前,对每个 coder.updateBuildInfo 语句只能添加一个链接对象文件。因此,此功能不可用。

要使用后续参量,请包含 '' 作为占位符参量。

指示链接对象是否预编译的变量,指定为逻辑值。该值必须为编译时常量。

如果为了更快的编译和链接而预编译了链接对象,并且该对象存在于指定的位置,请指定 true。否则,MATLAB Coder™ 编译过程会在编译文件夹中创建链接对象。

如果 linkonly 设置为 true,则忽略此参量。

数据类型: logical

指示对象是否只能用于链接的变量,指定为逻辑值。该值必须为编译时常量。

如果您需要 MATLAB Coder 编译过程不能在联编文件中构建或生成用于编译指定链接对象的规则,请指定 true。在这种情况下,当链接最终可执行文件时,编译过程应只包含该对象。否则,用于编译链接对象的规则将被添加到联编文件中。

您可以使用此参量合并没有可用源文件的链接对象。

如果 linkonly 设置为 true,将忽略 precompiled 的值。

数据类型: logical

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2013b 中推出