coder.updateBuildInfo

Обновите информационный объект сборки RTW.BuildInfo

Синтаксис

coder.updateBuildInfo('addCompileFlags',options)
coder.updateBuildInfo('addLinkFlags',options)
coder.updateBuildInfo('addDefines',options)
coder.updateBuildInfo(___,group)
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)

Описание

пример

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) присваивает название группы пути для дальнейшего использования.

Примеры

свернуть все

Добавьте параметры компилятора -Zi и -Wall во время генерации кода для функции, func.

Где угодно в коде MATLAB® для func, добавьте следующую строку:

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

Сгенерируйте код для func с помощью команды codegen. Откройте Отчет Генерации кода.

codegen -config:lib -launchreport func 

Вы видите добавленные параметры компилятора под вкладкой Build Logs в Отчете Генерации кода.

Добавьте исходный файл в информацию о сборке проекта при генерации кода для функции, calc_factorial.

  1. Запишите заголовочному файлу fact.h, который объявляет функцию C factorial.

     double factorial(double x);

    fact.h будет включен как заголовочный файл в сгенерированном коде. Это включение гарантирует, что функция объявляется, прежде чем она будет названа.

    Сохраните файл в текущей папке.

  2. Запишите файл C fact.c, который содержит определение factorial. factorial вычисляет факториал своего входа.

    #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. Запишите функции MATLAB calc_factorial, который использует coder.ceval, чтобы вызвать внешнюю функцию C 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. Сгенерируйте код для calc_factorial с помощью команды codegen.

     codegen -config:dll -launchreport calc_factorial -args 0

    В Отчете Генерации кода, на вкладке C Code, вы видите добавленный исходный файл fact.c.

Добавьте объект ссылки LinkObj.lib в информацию о сборке при генерации кода для функционального func. В данном примере у вас должен быть объект ссылки LinkObj.lib, сохраненный в локальной папке, например, c:\Link_Objects.

Где угодно в коде MATLAB для func, добавьте следующие строки:

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

Сгенерируйте MEX-функцию для func с помощью команды codegen. Откройте Отчет Генерации кода.

codegen -launchreport func 

Вы видите добавленный объект ссылки под вкладкой Build Logs в Отчете Генерации кода.

Добавьте включать путь к информации о сборке при генерации кода для функции, adder. Включайте заголовочный файл, adder.h, существующий на пути.

Когда заголовочные файлы не будут находиться в текущей папке, чтобы включать их, используйте этот метод:

  1. Запишите заголовочному файлу mysum.h, который содержит объявление для функции C mysum.

    double mysum(double, double);

    Сохраните его в локальной папке, например, c:\coder\myheaders.

  2. Запишите файл C mysum.c, который содержит определение функционального mysum.

    #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. Сгенерируйте код для adder с помощью команды codegen.

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

    Откройте Отчет Генерации кода. Заголовочный файл adder.h включен в сгенерированный код.

Входные параметры

свернуть все

Создайте опции, заданные как вектор символов, или представьте скаляр в виде строки. Значение должно быть постоянным временем компиляции.

В зависимости от ведущего аргумента 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'Путь к исходным файлам

Относительный путь начинает с папки сборки. Если вам содержали функциональный foo в папке C:\myCode, и вы генерируете код MEX при помощи:

codegen foo -report

затем папкой сборки является C:\myCode\codegen\mex\foo. Можно записать путь из папки сборки или записать путь из текущей рабочей папки, в которой вы генерируете код. Сошлитесь на текущую рабочую папку при помощи макроса START_DIR. Например, предположите, что ваш исходный файл содержится в C:\myCode\mySrcDir, и вы генерируете код от C:\myCode. Напишите путь как в этих примерах:

Пример: coder.updateBuildInfo('addSourceFiles','fact.c','..\..\..\mySrcDir')

Пример: coder.updateBuildInfo('addSourceFiles','fact.c','$(START_DIR)\mySrcDir')

Приоритет объектов ссылки.

Эта функция применяется только, когда несколько объектов ссылки добавляются. В настоящее время только один файл объекта ссылки может быть добавлен для каждого оператора coder.updateBuildInfo. Поэтому эта функция не доступна для использования.

Чтобы использовать последующие аргументы, включайте '' как аргумент заполнителя.

Переменная, указывающая, предварительно ли объекты ссылки скомпилированы, задала как логическое значение. Значение должно быть постоянным временем компиляции.

Если объект ссылки был предварительно создан для более быстрой компиляции и соединения и существует в заданном месте, задайте true. В противном случае процесс сборки MATLAB Coder™ создает объект ссылки в папке сборки.

Если linkonly установлен в true, этот аргумент проигнорирован.

Типы данных: логический

Переменная, указывающая, должны ли объекты использоваться для соединения только, задала как логическое значение. Значение должно быть постоянным временем компиляции.

Если вы хотите это, процесс сборки MATLAB Coder не должен создавать или генерировать правила в make-файле для создания заданного объекта ссылки, задавать true. Вместо этого при соединении итогового исполняемого файла процесс должен только включать объект. В противном случае правила для создания объекта ссылки добавляются к make-файлу.

Можно использовать этот аргумент, чтобы включить объекты ссылки, для которых исходные файлы не доступны.

Если linkonly установлен в true, значение precompiled проигнорировано.

Типы данных: логический

Введенный в R2013b