Настройте процесс сборки с файлом 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, передача в hookMethod аргумент и другие аргументы. Вы реализуете только те методы рычага, которых требует ваш процесс сборки.

Если ваша модель содержит образцы модели, можно реализовать 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'выход, и 'error'. STF_make_rtw_hook функционируйте отправляет соответствующим нормам с switch оператор.

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

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

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

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

  • 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' этапы только. Для получения информации об этих полях и функциях, чтобы получить доступ к ним, смотрите Индивидуальную настройку Процесса сборки.

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

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

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

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

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

Примечание

Процесс сборки временно изменяет MATLAB рабочая папка в папку сборки для этапов 'before_make', 'after_make'выход, и '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 оператор.

Сцепите метод after_tlc

after_tlc сцепитесь метод доступен только для назад совместимости.

Формат сгенерированного кода во время after_tlc этап не является итоговым форматом.

Похожие темы