Процесс сборки позволяет вам предоставить дополнительный пользовательский код в методах рычага, которые выполняются в заданных точках в генерации кода и делают процесс. Можно использовать методы рычага, чтобы добавить целевые действия в процесс сборки.
Можно изменить методы рычага в файле, в общем называемом
, где STF_make_rtw_hook.m
является именем системного конечного файла, такого как STF
ert
или mytarget
. Этот файл реализует функцию,
, который отправляет определенному действию, в зависимости от аргумента STF_make_rtw_hook
hookMethod
, передал в.
Процесс сборки вызывает
, передающий в theSTF_make_rtw_hook
hookMethod
аргументе и других аргументах. Вы реализуете только те методы рычага, которых требует ваш процесс сборки.
Если ваша модель содержит эталонные модели, можно реализовать
для каждой эталонной модели как требуется. Процесс сборки вызывает каждый STF_make_rtw_hook.m
для эталонных моделей, обрабатывая эти файлы рекурсивно (в порядке зависимости).STF_make_rtw_hook
Для процесса сборки, чтобы вызвать
, проверяйте, что следующим условиям отвечают:STF_make_rtw_hook
Файл
находится на пути MATLAB®.STF_make_rtw_hook.m
Имя файла является именем вашего системного конечного файла (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
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'
подготавливает только. Для получения информации об этих полях и функциях, чтобы получить доступ к ним, смотрите Индивидуальную настройку Процесса сборки.
Вот некоторые примеры того, как применить методы рычага
.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
функциях
: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
ert_make_rtw_hook.m
, который расположен в (открытом)
folder
, можно следующим образом:matlabroot/toolbox/coder/embeddedcoder
Скопируйте ert_make_rtw_hook.m
в папку в пути MATLAB. Переименуйте его в соответствии с соглашениями о присвоении имен, описанными в Соглашениях для Использования Файла STF_make_rtw_hook. Например, чтобы использовать это с GRT предназначается для grt.tlc
, переименовывает его к grt_make_rtw_hook.m
.
Переименуйте функцию ert_make_rtw_hook
в файле, чтобы совпадать с именем файла.
Реализуйте рычаги, которых вы требуете путем добавления кода в операторы выбора в операторе switch hookMethod
.