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

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

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

  • Используя методы RTW.BuildInfo объект.

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

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

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

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

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

RTW.BuildInfo Методы

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

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

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

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

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

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

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

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

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

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

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 Функция

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

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 Code, кликают по стреле Generate.

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

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

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

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

| | | |

Похожие темы