Процесс сборки позволяет вам предоставить дополнительный пользовательский код в методах рычага, которые выполняются в заданных точках в генерации кода и делают процесс. Можно использовать методы рычага, чтобы добавить целевые действия в процесс сборки.
Можно изменить методы рычага в файле, в общем называемом
, где STF
_make_rtw_hook.m
имя системного конечного файла, такого как STF
ert
или mytarget
. Этот файл реализует функцию,
, это отправляет определенному действию, в зависимости от STF
_make_rtw_hookhookMethod
аргумент передал в.
Процесс сборки вызывает
, передача в theSTF
_make_rtw_hookhookMethod
аргумент и другие аргументы. Вы реализуете только те методы рычага, которых требует ваш процесс сборки.
Если ваша модель содержит эталонные модели, можно реализовать
для каждой эталонной модели как требуется. Процесс сборки вызывает каждый 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_hookhookMethod
'entry'
, 'before_tlc'
, 'after_tlc'
, 'before_make'
, 'after_make'
выход
, и 'error'
.
функционируйте отправляет соответствующим нормам с STF
_make_rtw_hookswitch
оператор.
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'
выход
, и '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
функции: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_hookert_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
оператор.