Настройте процесс сборки с файлом STF_make_rtw_hook

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

Файл STF_make_rtw_hook

Можно изменить методы рычага в файле, в общем называемом STF_make_rtw_hook.m, где STF является именем системного конечного файла, такого как ert или mytarget. Этот файл реализует функцию, STF_make_rtw_hook, который отправляет определенному действию, в зависимости от аргумента hookMethod, передал в.

Процесс сборки вызывает STF_make_rtw_hook, передающий в thehookMethod аргументе и других аргументах. Вы реализуете только те методы рычага, которых требует ваш процесс сборки.

Если ваша модель содержит эталонные модели, можно реализовать STF_make_rtw_hook.m для каждой эталонной модели как требуется. Процесс сборки вызывает каждый STF_make_rtw_hook для эталонных моделей, обрабатывая эти файлы рекурсивно (в порядке зависимости).

Соглашения для Использования файла STF_make_rtw_hook

Для процесса сборки, чтобы вызвать STF_make_rtw_hook, проверяйте, что следующим условиям отвечают:

  • Файл STF_make_rtw_hook.m находится на пути MATLAB®.

  • Имя файла является именем вашего системного конечного файла (STF), добавленный к тексту _make_rtw_hook.m. Например, если вы генерируете код с пользовательским системным конечным файлом mytarget.tlc, называете ваш файл рычага mytarget_make_rtw_hook.m и называете функцию рычага реализованной в файле mytarget_make_rtw_hook.

  • Функция рычага, реализованная в файле, использует прототипа функции, описанного в Прототипе функции STF_make_rtw_hook.m и Аргументах.

Прототип функции STF_make_rtw_hook.m и аргументы

Прототип функции для STF_make_rtw_hook:

function STF_make_rtw_hook(hookMethod, modelName, rtwRoot, templateMakefile,
buildOpts, buildArgs, buildInfo)

Аргументы заданы как:

  • hookMethod: Вектор символов, задающий этап процесса сборки, от которого вызвана функция STF_make_rtw_hook. Следующая блок-схема обобщает процесс сборки, подсвечивая точки рычага. Допустимыми значениями для hookMethod является 'entry', 'before_tlc', 'after_tlc', 'before_make', 'after_make', 'exit' и 'error'. Функция STF_make_rtw_hook отправляет соответствующим нормам с оператором switch.

  • modelName: Вектор символов, задающий имя модели. Допустимый на всех этапах процесса сборки.

  • rtwRoot: зарезервированный.

  • templateMakefile: Имя make-файла шаблона.

  • buildOpts: структура MATLAB, содержащая поля, описала в следующем списке. Допустимый для 'before_make', 'after_make' и 'exit' подготавливает только. Поля buildOpts включают:

    • modules: Вектор символов, задающий список дополнительных файлов, чтобы скомпилировать.

    • codeFormat: Вектор символов, задающий значение переменной CodeFormat TLC для цели. (Основанные на ERT цели должны использовать значение 'Embedded-C' для переменной CodeFormat TLC и использовать соответствующее значение 'ert.tlc' в поле rtwgensettings.DerivedFrom.)

    • noninlinedSFcns: Массив ячеек, задающий список невстроенных S-функций в модели.

  • buildArgs: Вектор символов, содержащий аргумент к make_rtw. Когда вы вызываете процесс сборки, buildArgs копируется с аргумента после "make_rtw" в поле Configuration Parameters + Code Generation + Make command.

    Например, следующее приводят аргументы от Сделать поля команды

    make_rtw VAR1=0 VAR2=4

    сгенерируйте следующее:

    % make -f untitled.mk VAR1=0 VAR2=4

    Аргумент buildArgs не запрашивает сборки подхода набора инструментальных средств, потому что эти сборки не позволяют добавлять, приводят аргументы вызову make_rtw. На командной строке компилятора, чтобы предоставить пользовательские определения (например, VAR1=0 VAR2=4), которые запрашивают и подход TMF и сборки подхода набора инструментальных средств, используют поле Configuration Parameters> Code Generation> Custom Code> Defines.

  • buildInfo: структура MATLAB, которая содержит поля информации о сборке модели. Допустимый для 'after_tlc', 'before_make', 'after_make' и 'exit' подготавливает только. Для получения информации об этих полях и функциях, чтобы получить доступ к ним, смотрите Индивидуальную настройку Процесса сборки (Simulink Coder).

Приложения для STF_make_rtw_hook.m

Вот некоторые примеры того, как применить методы рычага STF_make_rtw_hook.m.

В целом можно использовать рычаг 'entry', чтобы инициализировать процесс сборки, например, изменить или подтвердить настройки, прежде чем код будет сгенерирован. Одно приложение для рычага 'entry' должно повторно выполнить скрипт автоматической конфигурации, который первоначально запустился в целевое время выбора, чтобы выдержать сравнение, параметры модели до и после скрипта выполняется, в целях валидации.

Другие точки рычага, 'before_tlc', 'after_tlc', 'before_make', 'after_make', 'exit' и 'error' полезны для взаимодействия через интерфейс с внешними наборами инструментальных средств, инструментами системы контроля версий и другими инструментами среды.

Например, вы могли использовать файл STF_make_rtw_hook.m на этапе после 'entry', чтобы получить путь к папке сборки. На этапе 'exit' вы могли затем определить местоположение файлов сгенерированного кода в папке сборки и проверять их в вашей системе управления версиями. Можно использовать 'error', чтобы очистить статические или глобальные данные, используемые функцией рычага, когда ошибка происходит во время генерации кода или процесса сборки.

Примечание

Процесс сборки временно изменяет MATLAB рабочая папка на папку сборки для этапов 'before_make', 'after_make', 'exit' и 'error'. Ваш файл STF_make_rtw_hook.m не должен делать неправильные предположения о местоположении папки сборки. В точке после этапа 'entry' можно получить путь к папке сборки. В следующем примере кода MATLAB путь к папке сборки возвращен как вектор символов в переменную buildDirPath.

buildDirPath = rtwprivate('get_makertwsettings',gcs,'BuildDirectory');

Примечание

Изменение в настройке модели в файле STF_make_rtw_hook.m (включая переключающиеся Варианты) может привести к неожиданным результатам в генерации кода.

Регенерация кода системы управления Используя STF_make_rtw_hook.m

Когда вы восстанавливаете модель, по умолчанию, процесс сборки выполняет проверки, чтобы определить, требуют ли изменения в образцовых или соответствующих настройках регенерации кода топ-модели. (Для получения дополнительной информации на критериях, смотрите Регенерацию Управления Кода Топ-модели.), Если проверки решают, что генерация кода топ-модели требуется, процесс сборки полностью регенерирует и компилирует типовой кодекс. Если проверки указывают, что сгенерированный код топ-модели является текущим относительно модели, и образцовые настройки не требуют полной регенерации, процесс сборки не использует регенерацию кода топ-модели.

Независимо от того, регенерирован ли код топ-модели, процесс сборки впоследствии вызывает рычаги процесса сборки, включая функции STF_make_rtw_hook и команду генерации кода сообщения. Следующие механизмы позволяют вам выполнять действия, связанные с регенерацией кода в функциях STF_make_rtw_hook:

  • Чтобы обеспечить регенерацию кода, используйте следующий вызов функции от рычага 'entry':

    rtw.targetNeedsCodeGen('set', true);
  • В рычагах от 'before_tlc' до 'exit' структура buildOpts, переданная рычагу, имеет булево поле codeWasUpToDate. Поле установлено в true, если типовой кодекс был актуален, и код не был регенерирован, или false, если код не был актуален, и код был регенерирован. Можно настроить действия рычага на основе значения этого поля. Например:

    ...
    case 'before_tlc'
        if buildOpts.codeWasUpToDate
            %Perform hook actions for up to date model
        else
            %Perform hook actions for full code generation
        end
    ...

Используйте STF_make_rtw_hook.m для своей процедуры сборки

Чтобы создать пользовательский файл рычага STF_make_rtw_hook для вашей процедуры сборки, скопируйте и отредактируйте пример файл ert_make_rtw_hook.m, который расположен в (открытом) foldermatlabroot/toolbox/coder/embeddedcoder, можно следующим образом:

  1. Скопируйте ert_make_rtw_hook.m в папку в пути MATLAB. Переименуйте его в соответствии с соглашениями о присвоении имен, описанными в Соглашениях для Использования Файла STF_make_rtw_hook. Например, чтобы использовать это с GRT предназначается для grt.tlc, переименовывает его к grt_make_rtw_hook.m.

  2. Переименуйте функцию ert_make_rtw_hook в файле, чтобы совпадать с именем файла.

  3. Реализуйте рычаги, которых вы требуете путем добавления кода в операторы выбора в операторе switch hookMethod.