Генератор кода поддерживает следующие подходы к построению (компиляции и связыванию) кода, создаваемого на основе моделей Simulink ®:
Инструментальная цепочка - процесс построения, который создает makefile и поддерживает пользовательские инструментальные цепочки. Этот подход:
Обеспечивает управление процессом построения с помощью информационных объектов цепочки инструментов. Эти объекты можно определить с помощью сценариев MATLAB.
Поддержка ссылок на модели, SIL и PIL.
Поддержка Simulink Coder™, встроенного кодера ® и кодера MATLAB ®.
Makefile шаблона - процесс построения, в котором используется файл шаблона с указанной цепочкой инструментов. Этот подход:
При необходимости используется информационный объект цепочки инструментов.
Поддержка ссылок на модели, SIL и PIL.
Поддержка Simulink Coder и Embedded Coder.
Для выбора процесса построения модели можно использовать параметр конфигурации целевого файла Система (System target file configuration). При установке для системного целевого файла значения:
ert.tlc, ert_shrlib.tlc, grt.tlcили любого системного целевого файла, совместимого с цепочкой инструментов, в процессе построения по умолчанию используется подход, основанный на цепочке инструментов.
В любом системном целевом файле, не совместимом с цепочкой инструментов, процесс построения использует подход makefile шаблона (Embedded Coder).
С помощью этой команды можно переключиться с подхода, основанного на цепочке инструментов, на подход, основанный на шаблоне makefile:
set_param(model, 'MakeCommand', 'make_rtw TMF=1')
Параметры цепочки инструментов отображаются в разделе «Процесс построения» при установке для параметра «Системный целевой файл» значения:
grt.tlc — Generic Real-Time Target
ert.tlc — Embedded Coder (требуется продукт Embedded Coder)
ert_shrlib.tlc — Embedded Coder (host-based shared library target) (требуется встроенный кодер)
Любой целевой файл, совместимый с цепочкой инструментов (если он основан на ERT, требуется встроенный кодер)
Дополнительные сведения о системных целевых файлах, совместимых с цепочкой инструментов, см. в разделе Поддержка подхода к цепочке инструментов с пользовательским целевым файлом.

Параметры цепочки инструментов включают следующие параметры конфигурации:
Toolchain - определяет коллекцию программных средств сторонних производителей, создающих созданный код. В состав цепочки инструментов могут входить компилятор, компоновщик и архиватор, а также другие инструменты предварительного или последующего создания.
Значение по умолчанию для группы инструментов: Automatically locate an installed toolchain. Параметр «Цепь инструментов» отображает имя расположенной ниже цепи инструментов. Automatically locate an installed toolchain.
Для проверки наличия цепочки инструментов и наличия в генераторе кода информации, необходимой для ее использования, в разделе «Дополнительные параметры» выберите «Проверить цепь инструментов». В полученном отчете о проверке для выбранной цепочки инструментов отображается значение «pass/fail», а также проблемы, требующие разрешения.
Конфигурация построения -- Указывает параметры оптимизации. По умолчанию для параметра «Конфигурация построения» установлено значение Faster Builds. Также можно выбрать Faster Runs, Debug, и Specify. При выборе Specifyможно настроить параметры для цепочки инструментов. При нажатии кнопки «Применить» пользовательские настройки цепочки инструментов применяются к текущей модели.
Примечание
Следующие целевые системные файлы, использующие подход makefile шаблона, имеют те же имена, но отличаются от описания целевых системных файлов, использующих подход toolchain:
ert.tlc — Create Visual C/C++ Solution File for Embedded Coder
grt.tlc — Create Visual C/C++ Solution File for Simulink Coder
Чтобы избежать путаницы, нажмите кнопку Обзор (Browse), чтобы выбрать системный целевой файл и просмотреть описание каждого файла.
При открытии модели, созданной перед R2013b и использующей следующие целевые системные файлы, программа пытается обновить модель. Обновление изменяет конфигурацию с использования параметров makefile шаблона на использование параметров цепочки инструментов:
ert.tlc — Embedded Coder
ert_shrlib.tlc — Embedded Coder (host-based shared library target)
grt.tlc — Generic Real-Time Target
Примечание
Сведения об обновлении моделей с использованием пользовательского целевого файла системы для использования подхода на основе цепочки инструментов см. в разделе Поддержка подхода на основе цепочки инструментов с пользовательским целевым файлом.
Некоторые значения параметров конфигурации модели не позволяют программе обновить модель для использования настроек цепочки инструментов. Ниже приведены инструкции по завершению процесса обновления.
Попробуйте обновить модели и использовать подход построения цепочки инструментов. Это не обязательно. Можно продолжить создание кода из модели, которая не была обновлена.
Примечание
Программное обеспечение не обновляет модели, использующие следующие целевые системные файлы:
ert.tlc — Create Visual C/C++ Solution File for Embedded Coder
grt.tlc — Create Visual C/C++ Solution File for Simulink Coder
Чтобы проверить, обновлена ли модель, выполните следующие действия.
Если указаны параметры конфигурации Toolchain и Build, модель была обновлена.

Если указаны такие параметры конфигурации makefile, как Generate makefile, Make command и Template makefile, модель не была обновлена.
Начните с создания рабочей копии модели с помощью команды Файл (File) > Сохранить как (Save As). Это действие сохраняет исходные параметры модели и конфигурации для справки.
Попробуйте обновить модель с помощью помощника по обновлению:
На вкладке «Моделирование» в разделе «Оценка и управление» выберите «Помощник по обновлению».
В программе Upgrade Advisor выберите Проверить и обновить модель, чтобы использовать подход к цепочке инструментов для построения сгенерированного кода, и нажмите кнопку Выполнить эту проверку.
Выполните предложенные действия и/или щелкните Обновить модель (Update Model).
Если обновление модели с помощью помощника по обновлению невозможно, для одного или нескольких следующих параметров не задано значение по умолчанию, показанное здесь:
Уровень оптимизации компилятора - Optimizations off (faster builds)
Создать makefile - включено
Файл макета шаблона - файл макета целевого файла системы
Создать команду - make_rtw без аргументов
Иногда модель невозможно обновить. Попробуйте выполнить следующую процедуру:
Если параметр «Создать make-файл» отключен, этот случай нельзя обновить. Однако можно попробовать включить его и обновить модель с помощью Upgrade Advisor.
Если для уровня оптимизации компилятора установлено значение Optimizations on (faster runs):
Установить уровень оптимизации компилятора равным Optimizations off (faster builds).
Обновите модель с помощью помощника по обновлению.
Задать для конфигурации построения значение Faster Runs.
Если для уровня оптимизации компилятора установлено значение Custom:
Скопируйте флаги оптимизации пользовательского компилятора в текстовый файл.
Установить уровень оптимизации компилятора в Optimizations off (faster builds).
Обновите модель с помощью помощника по обновлению.
Задать для конфигурации построения значение Specify.
Для выполнения той же оптимизации отредактируйте параметры компилятора.
Если в makefile шаблона используется настраиваемый makefile шаблона, этот случай нельзя обновить. Однако можно попробовать следующее:
Обновите makefile шаблона, чтобы использовать файл make по умолчанию для системного целевого файла.
Примечание
Чтобы получить имя makefile по умолчанию, измените системный целевой файл, нажмите кнопку Применить, измените его назад и снова нажмите кнопку Применить.
Обновите модель с помощью помощника по обновлению.
Если файл makefile шаблона содержит параметры инструмента построения, такие как флаги оптимизации компилятора, установите для параметра Конфигурация построения значение Specify и обновите параметры.
Если в makefile шаблона используются пользовательские инструменты построения, создайте и зарегистрируйте пользовательскую цепочку инструментов, как описано в разделе Регистрация пользовательской цепочки инструментов. Затем задайте параметр «Цепь инструментов», чтобы использовать пользовательскую цепь инструментов.
Примечание
После регистрации пользовательской цепочки инструментов обновите ее, чтобы использовать ее.
Если файл создания шаблона содержит пользовательские правила и логику, эти настройки нельзя применить к обновленной модели.
Если для целевого файла системы установлено значение tlc в файле, использующем подход makefile шаблона, отображается уровень оптимизации компилятора, параметры makefile Generate, Make command и makefile Template.

Параметр «Создать make-файл» определяет, должен ли процесс построения создавать make-файл для модели. По умолчанию процесс построения генерирует make-файл. Подавление создания make-файла, например, в поддержку пользовательской обработки построения, не основанной на makefile, путем очистки Generate make-файла. При сбросе этого параметра:
Команды «Создать» и «Файл шаблона» недоступны.
Настройте обработку построений после генерации кода с помощью пользовательской команды, как описано в разделе Настройка обработки построений после генерации кода.
Каждый системный целевой файл на основе makefile шаблона имеет связанный make команда. Генератор кода использует эту внутреннюю команду MATLAB для управления процессом построения. Команда появляется в поле Создать команду и запускается при запуске построения.
Большинство системных целевых файлов используют команду по умолчанию, make_rtw. Целевые файлы сторонних систем могут предоставить другой make команда. См. документацию поставщика.
В дополнение к названию make можно указать параметры makefile в поле Make command. Эти параметры могут включать параметры компилятора, включая пути и другие параметры. Когда процесс сборки вызывает make , эти опции передаются на make , которая добавляет их к общим флагам, передаваемым компилятору.
Шаблоны Makefiles и Make Options перечисляют параметры команды Make, которые можно использовать с каждым поддерживаемым компилятором.
Поле makefile шаблона имеет следующие функции:
При выборе системного целевого файла с помощью обозревателя системных целевых файлов в этом поле отображается имя файла языка MATLAB, в котором выбирается файл макета шаблона для среды разработки. Например, в окне Параметры конфигурации модели: Создание кода отображается поле Makefile шаблона. grt_default_tmf, указывая, что процесс построения вызывает grt_default_tmf.m.
Шаблоны Makefiles и Make Options дают подробное описание логики, с помощью которой процесс построения выбирает шаблон Makefile.
Кроме того, можно явно ввести имя определенного make-файла шаблона (включая расширение) или файла языка MATLAB, который возвращает make-файл шаблона в этом поле. Этот подход используется при использовании системного целевого файла, который не отображается в обозревателе системных целевых файлов. Например, используйте этот подход, если вы написали собственный файл макета шаблона для пользовательского целевого файла системы.
Если вы указываете собственный файл make шаблона, обязательно включите расширение имени файла. Если расширение пропущено, процесс построения пытается найти и выполнить файл с расширением .m (то есть файл языка MATLAB). Файл создания шаблона (или файл языка MATLAB, возвращающий файл создания шаблона) должен находиться по пути MATLAB. Чтобы определить, находится ли файл в пути MATLAB, введите следующую команду в окне команд MATLAB:
which tmf_filename
Укажите цепочку инструментов для процесса построения makefile шаблона. В этом примере приведено определение минимальной цепочки инструментов и показано, как можно связать ее с файлом макета шаблона, который является копией ert_unix.tmf или ert_vcx64.tmf.
Используйте этот код для файла определения цепочки инструментов.
function tc = minimalToolchainForTMF % Create a toolchain object tc = coder.make.ToolchainInfo('Name', 'Minimal Toolchain for TMF Build'); % Specify that the linker requires a response file instead of % including all object file modules on the linker command line tc.addAttribute('RequiresCommandFile', true); if ispc objExt = '.obj'; else objExt = '.o'; end % Specify source file and object file extension used by the C compiler tool = tc.getBuildTool('C Compiler'); tool.setFileExtension( 'Source', '.c'); tool.setFileExtension( 'Header', '.h'); tool.setFileExtension( 'Object', objExt); % Specify source file and object file extension used by the C++ compiler tool = tc.getBuildTool('C++ Compiler'); tool.setFileExtension( 'Source', '.cpp'); tool.setFileExtension( 'Header', '.hpp'); tool.setFileExtension( 'Object', objExt);
Использовать копию ert_unix.tmf или ert_vcx64.tmf в качестве файла создания шаблона.
copyfile(fullfile(matlabroot, 'toolbox', 'coder', ... 'compile', 'tmf', 'ert_vcx64.tmf'), ... 'ert_copy.tmf')
В файле make шаблона, т. е. ert_copy.tmf, отредактируйте TOOLCHAIN_NAME макро.
TOOLCHAIN_NAME = "Minimal Toolchain for TMF Build"Свяжите цепочку инструментов с файлом создания шаблона.
Запустите файл определения цепочки инструментов, который создает ToolchainInfo объект, tc.
tc = minimalToolchainForTMF;
Сохранить ToolchainInfo объект в MAT-файл.
save('tcMinimal','tc')
Регистрация цепочки инструментов в RTW.TargetRegistry.
Поместить этот код в rtwTargetInfo.m файл.
function rtwTargetInfo(tr) tr.registerTargetInfo(@loc_createToolchain); end function config = loc_createToolchain config(1) = coder.make.ToolchainInfoRegistry; config(1).Name = 'Minimal Toolchain for TMF Build'; config(1).FileName = fullfile(fileparts(mfilename('fullpath')),... 'tcMinimal.mat'); config(1).TargetHWDeviceType = {'*'}; config(1).Platform = {computer('arch')}; end
Сохраните файл в текущей рабочей папке или в папке, которая находится в пути поиска MATLAB.
Сбросить TargetRegistry.
RTW.TargetRegistry.getInstance('reset');
Свяжите файл создания шаблона с моделью и создайте модель.
set_param(model, 'TemplateMakefile', 'ert_copy.tmf'); slbuild(model);
Компилятор целевого языка (TLC) является неотъемлемой частью генератора кода. Он позволяет настраивать сгенерированный код. С помощью настройки можно создавать специфичный для платформы код или включать собственные алгоритмические изменения для скорости выполнения, размера кода или совместимости с существующими методами, которые вы предпочитаете поддерживать. Дополнительные сведения см. в разделе Обзор компилятора целевого языка.
Параметры TLC, заданные для создания кода, отображаются в разделе сводки созданного отчета о создании кода HTML.
Примечание
Задание параметров командной строки TLC не добавляет флаги в командную строку make.
Параметры и аргументы командной строки TLC (Target Language Compiler) для создания кода можно задать с помощью параметра модели TLCOptions в set_param вызов функции. Например,
>> set_param(gcs,'TLCOptions','-p0 -aWarnNonSaturatedBlocks=0')
Некоторые распространенные варианты использования TLC включают в себя следующее:
-aVarName=1 объявление переменной TLC и/или назначение ей значения
-IC:\Work для указания пути включения
-v для получения подробных выходных данных обработки TLC (например, при отладке)
При построении модели с помощью GenerateMakefile установить в значение 'on' и GenCodeOnly установить в значение 'off', программное обеспечение генерирует make-файл и запускает make-файл для компиляции сгенерированного кода. После завершения компиляции программа создает и сохраняет контрольные суммы для исходных файлов и конфигурационных данных.
Если при построении модели доступны контрольные суммы из предыдущей сборки:
Программа использует контрольные суммы, чтобы определить, отличаются ли исходные файлы и данные конфигурации от предыдущей сборки.
Если программное обеспечение обнаруживает разницу, программное обеспечение:
Регенерация make-файла.
Перекомпилирует созданный код.
Если в процессе построения используется make-файл шаблона, можно отключить использование контрольных сумм, добавив этот текст в make-файл шаблона:
DO_NOT_USE_CHECKSUMS=1