Индивидуальная настройка процесса сборки

Для определенных приложений вы можете хотеть управлять аспектами процесса сборки, которые происходят после генерации исходного кода C/C++, но перед компиляцией. Например, можно задать опции компоновщика или компилятор. Можно получить и изменить все сгенерированные исходные файлы, чтобы добавить правовую оговорку авторского права. Можно управлять процессом сборки во множестве путей. Настройте процесс сборки:

  • Используя функциональный coder.updateBuildInfo.

  • Изменение информации о сборке при помощи класса coder.ExternalDependency.

  • Изменение информации о сборке со скриптом или функцией, выполняемой свойством настройки PostCodeGenCommand. Этот скрипт или функция называются командой постгенерации кода.

Все три из этих подходов работают путем изменения make-файла, который генерируется и используется, чтобы создать код. Как лучшая практика, рекомендуется использовать первые два подхода, coder.updateBuildInfo и coder.ExternalDependency. Эти подходы позволяют вам предварительно сконфигурировать свой код MATLAB® с информацией сборки, которую вы запрашиваете. Также команда генерации почтового индекса может обеспечить дополнительный, высоконастраиваемый подход, базирующийся вокруг независимой функции или скрипта.

Класс coder.ExternalDependency и команда постгенерации кода обеспечивают доступ к информационному объекту сборки, buildInfo. Можно использовать методы информации о сборке на buildInfo, чтобы сконфигурировать проект, сборку и информацию о зависимостях. MATLAB Coder™ создает buildInfo из класса RTW.BuildInfo в начале сборки. Этот объект хранится в MAT-файле buildInfo.mat и сохраняется в папке сборки.

После генерации кода можно получить доступ к информационному объекту сборки путем загрузки его от buildInfo.mat. Не путайте информационный объект сборки с объектом конфигурации сборки, coder.BuildConfig, который обеспечивает определенную функциональность для конфигурирования сборки в классе coder.ExternalDependency.

Создайте информационные методы

Для доступа или записывают данные к информационному объекту сборки, используют методы информации о сборке. Используя эти методы можно изменить:

  • Параметры компилятора

  • Опции компоновщика

  • Определения идентификатора препроцессора

  • Исходные файлы и пути

  • Включайте файлы и пути

  • Предварительно скомпилированные внешние библиотеки

  • Упаковочные опции.

    См. код пакета для других сред разработки.

Чтобы вызвать методы, используйте синтаксис:

method_name(buildInfo,input_arg1,...,input_argN)

Также можно войти:

buildInfo.method_name(input_arg1,...,input_argN)

 addCompileFlags

 addDefines

 addIncludeFiles

 addIncludePaths

 addLinkFlags

 addLinkObjects

 addNonBuildFiles

 addSourceFiles

 addSourcePaths

 addTMFTokens

 findIncludeFiles

 getCompileFlags

 getDefines

 getFullFileList

 getIncludeFiles

 getIncludePaths

 getLinkFlags

 getNonBuildFiles

 getSourceFiles

 getSourcePaths

 packNGo

 updateFilePathsAndExtensions

 updateFileSeparator

Чтобы использовать информационный объект сборки после, генерация кода завершена, загрузите файл buildInfo.mat от своего сгенерированного кода. Например:

load(fullfile('.','raspberrypi_generated_code','buildInfo.mat'));
packNGo(buildInfo,{'fileName','copy_to_raspberrypi'});

Функция coder.updateBuildInfo

Функция coder.updateBuildInfo обеспечивает удобный способ настроить процесс сборки из вашего кода MATLAB. Для получения дополнительной информации и примеры, смотрите страницу с описанием coder.updateBuildInfo.

Класс coder.ExternalDependency

Когда вы работаете с внешней интеграцией кода, или у вас есть несколько функций, которые используют ту же информацию о сборке, настраивают процесс сборки при помощи класса coder.ExternalDependency. Класс coder.ExternalDependency обеспечивает доступ к информационному объекту сборки и методам. Для получения дополнительной информации и примеры, смотрите, Разрабатывают Интерфейс для Внешнего Кода C/C++ и страницы с описанием coder.ExternalDependency.

Команда постгенерации кода

Как лучшая практика, настройте свой процесс сборки при помощи первых двух подходов, coder.updateBuildInfo и coder.ExternalDependency. Третий подход, который обеспечивает дополнительную гибкость, является командой постгенерации кода. Команда постгенерации кода является функцией или скриптом, выполняемым свойством объекта настройки PostCodeGenCommand. Установите команду при помощи своего объекта настройки генерации кода (coder.MexCodeConfig, coder.CodeConfig или coder.EmbeddedCodeConfig).

Формат командыРезультат
СкриптСкрипт может получить доступ к проекту (функция верхнего уровня) имя и информация о сборке непосредственно.
ФункцияФункция может получить название проекта и информацию о сборке в качестве аргументов.

Чтобы записать команду генерации кода сообщения как скрипт, установите PostCodeGenCommand на имя скрипта. Можно получить доступ к названию проекта в переменном projectName и объекту RTW.BuildInfo в переменном buildInfo. В командной строке войдите:

cfg = coder.config('lib');
cfg.PostCodeGenCommand = 'ScriptName';

Когда вы задаете команду как функцию, можно задать произвольное число входных параметров. Если вы хотите получить доступ к названию проекта, включайте projectName как аргумент. Если вы хотите изменить или получить доступ к информации о сборке, добавьте buildInfo в качестве аргумента. В командной строке войдите:

cfg = coder.config('lib');
cfg.PostCodeGenCommand = 'FunctionName(projectName, buildInfo)';

Например, рассмотрите функциональный setbuildargs, который берет информационный объект сборки в качестве параметра и добавляет опции компоновщика при помощи метода addLinkFlags.

function setbuildargs(buildInfo)
% The example being compiled requires pthread support.
% The -lpthread flag requests that the pthread library be included 
% in the build   
linkFlags = {'-lpthread'};
buildInfo.addLinkFlags(linkFlags);

Чтобы использовать эту функцию в качестве команды постгенерации кода, создайте объект настройки. Используйте этот объект настройки, когда вы сгенерируете код. Например:

cfg = coder.config('dll');
cfg.PostCodeGenCommand = 'setbuildargs(buildInfo)';
codegen -config cfg foo

Установить команду постгенерации кода из приложения MATLAB CODER:

  1. Чтобы открыть диалоговое окно Generate, на Сгенерировать Кодовой странице, нажимают стрелку Generate.

  2. Нажмите More Settings.

  3. На вкладке Custom Code, установленной параметр команды постгенерации кода.

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

Смотрите также

| | | |

Похожие темы

Была ли эта тема полезной?