Важным элементом управления размером сгенерированного кода является управление количеством и размером включенных файлов (зависимостей). Чтобы уменьшить количество системных файлов заголовков и созданных файлов заголовков, которые требуются для создания кода, полезно понять зависимости, которые создает процесс построения, и условия, которые приводят к зависимостям.
Зависимости между созданными исходными файлами и файлами заголовков отображаются на рисунке. Стрелки, идущие от точки файла к включаемым в него файлам. Существуют другие зависимости, например, от файлов заголовков Simulink ®tmwtypes.h и simstruc_types.h, плюс файлы библиотеки C или C++. На рисунке показаны отношения включения только между файлами, созданными в папке построения. Эти файлы могут ссылаться на служебный и ссылочный код модели, расположенный в папке создания кода. Дополнительные сведения о папках и файлах, создаваемых процессом построения, см. в разделах Управление папками процессов построения и Управление файлами процессов построения.
Две таблицы определяют условия, которые управляют созданием файлов зависимостей для целей GRT и ERT. Для управления зависимостями, связанными со сборкой, рассмотрите, как эти условия применяются к модели и процессу создания кода. Затем настройте параметры модели и параметры генерации кода для управления зависимостями файлов процесса построения.
Из-за различий в вариантах упаковки файлов для кода, генерируемого целевыми системными файлами на основе ERT, зависимости файлов немного отличаются от упаковки файлов для кода, генерируемого целевыми системными файлами на основе GRT. См. раздел Управление упаковкой файлов сгенерированных модулей кода (встроенный кодер).
Файлы заголовков родительской системы () включать файлы заголовков дочерних подсистем (model.h). В более многоуровневых моделях подсистемы аналогичным образом включают файлы заголовков своих детей в иерархию моделей. Как следствие, подсистемы способны рекурсивно просматривать свои дочерние подсистемы и просматривать корневую систему, потому что каждая subsystem.h или subsystem.c включает subsystem.cpp и model.h.model_private.h
На рисунке файлы , model.h, и model_private.h зависит от файла заголовка subsystem.hrtwtypes.h. При использовании системных целевых файлов, не основанных на системном целевом файле ERT, создаваемые исходные файлы могут иметь дополнительные зависимости от tmwtypes.h и simstruc_types.h.

Системные заголовочные файлы делают объявления функций, определения типов и определения макросов доступными для устаревшего или внешнего кода. Некоторые сценарии создания кода требуют включения файлов заголовков, специфичных для продукта генератора кода.
Генератор кода включает в себя некоторые системные файлы заголовков для широко определенных случаев. Например, сгенерированный код включает <stddef.h> если модель содержит служебную функцию, для которой требуется этот файл заголовка. Этот подход помогает определить зависимости заголовочных файлов:
Задайте для параметра конфигурации модели Размещение общего кода значение 'Shared location' и построить модель. Генератор кода помещает служебные функции в __sharedutils папка.
Используйте утилиту поиска в файле (например, программу grep) для поиска .c и .h файлы в __sharedutils папка для #include. В результатах поиска перечислены утилиты с зависимостями заголовочных файлов.
Эта информация используется для определения утилит для удаления из модели и уменьшения зависимостей файлов заголовков в сгенерированном коде.
Дополнительные сведения см. в разделе Создание общего служебного кода для функций с фиксированной точкой.
| Системный файл заголовка | Описание и условия включения для целевых системных файлов GRT или ERT |
|---|---|
| Определение математических констант GRT - сгенерированный код не включает этот файл. ERT - генерируемый код включает этот файл, когда код соответствует конфигурации модели для времени остановки решателя и либо:
|
| Математические функции с плавающей запятой GRT - сгенерированный код включает этот файл, если модель содержит математическую функцию с плавающей запятой. ERT - сгенерированный код включает этот файл, если модель содержит математическую функцию с плавающей запятой, если запись библиотеки замены кода не переопределяет функцию. Дополнительные сведения см. в разделе Выбор библиотеки замены кода. |
| Определяет значение NULL GRT и ERT - сгенерированный код включает этот файл, если модель содержит служебную функцию, требующую этого файла. |
| Предоставляет функции ввода-вывода файлов GRT - сгенерированный код включает этот файл, если модель включает блок «В файл». ERT - сгенерированный код включает этот файл, если:
|
| Предоставляет служебные функции, такие как целочисленные версии GRT - сгенерированный код включает этот файл, если:
ERT - сгенерированный код включает этот файл, если:
|
| Предоставляет функции памяти, такие как GRT - сгенерированный код включает этот файл при вызове кода инициализации модели. ERT - сгенерированный код включает этот файл при вызове кода инициализации блока или модели. Для получения списка соответствующих блоков в окне команд введите: Ищите блоки с N2 запиской. Пропускание вызовов для |
Зависимости в таблице для созданных файлов заголовков применяются к системным целевым файлам grt.tlc и ert.tlc. Системные целевые файлы, полученные из этих базовых целевых файлов системы, могут иметь дополнительные зависимости заголовков. Создание кода для блоков из блоков, встроенных целей и пользовательских S-функций может привести к дополнительным зависимостям заголовков.
| Файл заголовка | Описание и условия включения для целевых системных файлов GRT или ERT |
|---|---|
| Определяет перечисляемый тип, соответствующий встроенным типам данных GRT и ERT - сгенерированный код включает этот файл, если применяется одно или несколько из следующих условий:
|
| Определяет структуры данных для внешнего режима GRT и ERT - сгенерированный код включает этот файл, когда конфигурация модели включает внешний режим. |
| Определяет функции внешнего режима GRT и ERT - сгенерированный код включает этот файл, когда конфигурация модели включает внешний режим. |
| Поддержка неинлинговых S-функций с фиксированной точкой GRT - сгенерированный код включает этот файл. ERT - сгенерированный код включает этот файл, если :
|
| Содержит определения типов для мостов синхронизации GRT и ERT - созданный код включает этот файл при построении ссылочной модели или модели, содержащей блоки модели. |
| Определение специфичных для модели типов данных GRT и ERT - сгенерированный код включает этот файл. |
| Содержит определения типов для многословных типов данных и их порций размера слова GRT и ERT - сгенерированный код включает этот файл, если применяется одно или несколько из следующих условий:
Для модели, использующей многословные типы данных, генератор кода перезаписывает файл, если их длина превышает длину модели, для которой был создан код в последний раз. Чтобы избежать перезаписи этого файла, задайте:
|
| Поддержка неокончательных чисел GRT - сгенерированный код включает этот файл, если применяется одно или несколько из следующих условий:
ERT - сгенерированный код включает этот файл, если применяется одно или несколько из следующих условий:
|
| Содержит определения типов для специальных математических констант (таких как δ и e) и определяет GRT и ERT - сгенерированный код включает этот файл, если:
|
| Поддерживает ведение журнала файлов MAT и включает в себя: rtwtypes.h builtin_typeid_types.h multiword_types.h rt_mxclassid.h rtw_matlogging.h GRT - сгенерированный код включает этот файл. ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает параметр MAT-file logging. См. раздел Ведение журнала файлов MAT. |
| Определяет GRT и ERT - сгенерированный код включает этот файл, когда код включает |
| Поддержка непрерывного времени GRT - сгенерированный код включает этот файл, когда код включает ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает параметр Support: continuous time и когда код еще не включает |
| Поддерживает внешний режим GRT - сгенерированный код включает этот файл, когда код включает ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает внешний режим и когда код еще не включает |
| Поддержка ведения журнала файлов MAT GRT - сгенерированный код включает этот файл, когда код включает ERT - сгенерированный код включает этот файл, когда код включает |
| Поддерживает непрерывные состояния GRT - сгенерированный код включает этот файл, когда код включает ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает параметр Support: continuous time и когда код еще не включает |
| Определение типов данных генератора кода GRT - сгенерированный код включает этот файл. Использует подробную версию файла, которая включает ERT - сгенерированный код включает этот файл. См. rtwtypes.h. Генератор кода перезаписывает ранее созданный rtwtypes.h при включении (ранее отключенном) поддержки для:
Чтобы избежать перезаписи
|
| Поддерживает вызов неинлинных S-функций, использующих limits.h string.h tmwtypes.h simstruc_types.h GRT - сгенерированный код включает этот файл. ERT - сгенерированный код включает этот файл, если :
|
| Содержит определения, используемые в созданном коде, и включает файлы заголовков: rtw_matlogging.h rtw_extmode.h rtw_continuous.h rtw_solver.h sysran_types.h GRT - сгенерированный код включает этот файл, когда код включает ERT - сгенерированный код не включает этот файл. Для ERT, |
| Поддерживает внешний режим GRT - сгенерированный код включает этот файл, когда код включает ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает внешний режим и когда код еще не включает |
| Содержит определения пересечения нуля для моделей с запускаемыми подсистемами, в которых триггер поднимается, падает или либо. Файл генерируется только при необходимости модели, определяемой типом данных триггерного сигнала. Например, если тип данных триггерного сигнала является логическим, обнаружение пересечения нуля не требуется. GRT - сгенерированный код не включает этот файл для целей создания кода GRT. ERT - сгенерированный код включает этот файл, если модель имеет условно выполненную подсистему, где триггер использует обнаружение пересечения нуля. При создании содержимое |