Процесс сборки позволяет вам предоставить необязательный пользовательский код в методах hook, которые выполняются в заданных точках генерации кода и выполняют процесс. Можно использовать методы hook для добавления специфичных для целевого объекта действий к процессу сборки.
Можно изменять методы зацепления в файле, обычно называемом , где STF_make_rtw_hook.m - имя системного целевого файла, например STFert или mytarget. Этот файл реализует функцию, , который отправляет на определенное действие, в зависимости от STF_make_rtw_hookhookMethod передан аргумент.
Процесс сборки вызывает , проходя в STF_make_rtw_hookhookMethod аргумент и другие аргументы. Вы реализуете только те методы зацепления, которые требуются вашему процессу сборки.
Если ваша модель содержит образцы модели, можно реализовать для каждого образца модели по мере необходимости. Процесс сборки вызывает каждый STF_make_rtw_hook.m для образцов модели обработка этих файлов рекурсивно (в порядке зависимостей).STF_make_rtw_hook
Для вызова процесса сборки в , проверить выполнение следующих условий:STF_make_rtw_hook
The файл находится в MATLAB® путь.STF_make_rtw_hook.m
Имя файла является именем вашего системного целевого файла (STF), добавленный к тексту _make_rtw_hook.m. Для примера, если вы генерируете код с пользовательским системным целевым файлом mytarget.tlc, назовите файл hook mytarget_make_rtw_hook.m, и назовите функцию hook, реализованную в файле mytarget_make_rtw_hook.
Функция hook, реализованная в файле, использует прототип функции, описанный в STF_make_rtw_hook.m Function Prototype и аргументы.
Прототип функции для является: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', 'exit', и 'error'. The функция отправляет соответствующий код со STF_make_rtw_hookswitch оператор.

modelName: Вектор символов, задающий имя модели. Действительно на всех этапах процесса сборки.
rtwRootЗарезервировано.
templateMakefile: Имя файла make-файла шаблона.
buildOpts: Структура MATLAB, содержащая логическое поле codeWasUpToDate. Действителен для 'before_make', 'after_make', и 'exit' только этапы. The buildOpts поля включают:
buildArgs: Вектор символов, содержащий аргумент в make_rtw. Когда вы вызываете процесс сборки, buildArgs копируется из следующего аргумента "make_rtw" в поле Configuration Parameters + Code Generation + Make command.
Например, следующие делают аргументы из поля команды Make
make_rtw VAR1=0 VAR2=4
сгенерировать следующее:
% make -f untitled.mk VAR1=0 VAR2=4
The buildArgs аргумент не применяется к сборкам подхода набора инструментальных средств, поскольку эти сборки не позволяют добавлять аргументы деления к make_rtw вызов. В командной строке компилятора для предоставления пользовательских определений (для примера, VAR1=0 VAR2=4), которые применяются как к TMF-подходу, так и к сборкам подхода набора инструментальных средств, используйте поле Configuration Parameters Code Generation > Custom Code > Defines >.
buildInfo: Структура MATLAB, содержащая информационные поля сборки модели. Действителен для 'after_tlc', 'before_make', 'after_make', и 'exit' только этапы. Для получения информации об этих полях и функциях для доступа к ним смотрите Build Process Индивидуальной настройки.
Вот несколько примеров применения методы крючков.STF_make_rtw_hook.m
В целом можно использовать 'entry' hook для инициализации процесса сборки, например, для изменения или проверки настроек перед генерацией кода. Одно приложение для 'entry' hook - перезапуск скрипта автоматической настройки, который первоначально выполнялся в целевое время выбора, для сравнения параметров модели до и после выполнения скрипта в целях валидации.
Другие точки зацепления, 'before_tlc', 'after_tlc', 'before_make', 'after_make', 'exit', и 'error' применяются для взаимодействия с внешними цепями инструментов, инструментами системы контроля версий и другими инструментами окружения.
Например, можно использовать файл на этапе после STF_make_rtw_hook.m'entry' для получения пути к папке сборки. На 'exit' затем можно найти сгенерированный код файлы в папке сборки и проверить их в системе контроля версий. Можно использовать 'error' для очистки статических или глобальных данных, используемых функцией hook, когда ошибка возникает во время генерации кода или процесса сборки.
Примечание
Процесс сборки временно меняет рабочую папку MATLAB на папку сборки для этапов 'before_make', 'after_make', 'exit', и 'error'. Ваши файл не должен делать неправильные допущения относительно расположения папки сборки. В точке после STF_make_rtw_hook.m'entry' stage, можно получить путь к папке сборки. В следующем примере кода 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
...Создание пользовательского файл hook для вашей процедуры сборки, скопируйте и отредактируйте пример STF_make_rtw_hookert_make_rtw_hook.m файл, который находится в папке (откройте) следующим образом: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 оператор.
after_tlcThe after_tlc метод крюка доступен исключительно для обратной совместимости.
Формат сгенерированного кода во время after_tlc этап не является окончательным форматом.