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

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

  • Использование функции coder.updateBuildInfo.

  • Использование методов RTW.BuildInfo объект.

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

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

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

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

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

RTW.BuildInfo Методы

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

  • Опции компилятора

  • Опции Linker

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

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

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

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

  • Опции упаковки.

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

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

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

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

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

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

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

coder.updateBuildInfo Функция

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

coder.ExternalDependency Класс

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

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

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

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

Чтобы написать команду post code-generation как скрипт, установите 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 Code щелкните стрелу Generate.

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

  3. На вкладке Custom Code установите параметр Post-code-generation command.

Если ваша команда post-code-generation вызывает пользовательские функции, убедитесь, что функции указаны в пути MATLAB. Если процесс сборки не может найти функцию, которую вы используете в своей команде, процесс прекращает работать.

См. также

| | | |

Похожие темы