Когда вы генерируете код для модели, генератор кода по умолчанию создает общие файлы утилиты, которые требуются модели. Когда вы генерируете код с различными релизами, генераторы кода могут создавать функционально идентичные общие файлы, которые содержат некоторые нефункциональные различия. Для примера, различных комментариев и другого стиля кодирования. Когда вы используете тот же релиз для генерации кода для различных моделей в разных папках, можно также создать общие файлы с нефункциональными различиями. Для примера, если вы задаете другие ParenthesesLevel
или ExpressionFolding
значения для моделей, генератор кода может создавать общие файлы, которые содержат различные комментарии или различные стили кодирования.
Интегрированный код, который включает функционально идентичные общие файлы:
Является более дорогим для проверки, поскольку каждый общий файл требует верификации.
Создает ошибки компиляции, если общие файлы задают повторяющиеся символы.
Если у вас есть Embedded Coder® лицензия, можно избежать этих проблем, задав повторное использование общего кода из существующей папки, например, библиотеки проверенного кода только для чтения. В этом случае генератор кода не создает новых общих служебных файлов. Процесс сборки использует внешний код или ранее сгенерированный общий служебный код из папки. Администратор поддерживает и обновляет библиотеку только для чтения.
В диалоговом окне Параметров конфигурации:
В поле Existing shared code введите полный путь к папке общего кода.
Проверьте, что для диагностики Use only existing shared code задано значение error
(по умолчанию).
Удалите slprj
или переместиться в новую рабочую папку.
Создайте свою модель. Если вы не видите ошибки, ваша общая папка кода содержит необходимые общие файлы утилиты.
Если файлы отсутствуют в существующей папке общего кода, появляется ошибка. Чтобы продолжить генерацию кода с локально сгенерированной версией отсутствующих общих файлов утилиты:
Установите диагностику Use only existing shared code равной warning
.
Перестроите свою модель. Процесс генерации кода использует локально сгенерированную версию отсутствующих общих файлов утилиты.
Предоставьте администратору проверенной библиотеки кода свою модель и информацию о отсутствующих общих файлах утилиты. С помощью модели администратор генерирует необходимые общие файлы утилиты. Используя sharedCodeUpdate
(Embedded Coder), администратор добавляет файлы к существующей папке общего кода.
Если требуется повторно использовать общий код для компонента, экспортированного из предыдущего релиза, предоставьте администратору информацию о расположении папки сборки для компонента. Администратор может использовать sharedCodeUpdate
чтобы скопировать общий код для компонента в существующую папку общего кода.
Когда файлы будут доступны в существующей папке общего кода, повторите шаги 1-3.
Если общий код утилиты генерируется из библиотечных подсистем, которые разделяются между моделями, вы не можете повторно использовать код между релизами, потому что код специфичен для release - имя символа и имя файла включают номер release. Администратор должен добавить общий служебный код, сгенерированный для каждого релиза, в папку общего кода.
sharedCodeUpdate
(Embedded Coder) функция может добавлять файлы в общую папку кода, которые имеют идентичное содержимое, но различные имена файлов и функций. Это поведение полезно, когда у вас есть различные компоненты модели, которые требуют своих собственных общих служебных функций. Несмотря на то, что некоторый код дублируется, различные компоненты модели могут получить доступ к общим служебным функциям, с которыми они были проверены. Чтобы заставить компоненты модели иметь свои собственные версии общих служебных функций, сконфигурируйте правила именования, чтобы вставить имя модели в общие идентификаторы утилит (Embedded Coder).
Для большинства общих файлов кода утилиты можно задать основные копии, которые можно повторно использовать между релизами, не изменяя файлы. С некоторыми файлами, например, rtwtypes.h
, и zero_crossing_types.h
, существуют ситуации, когда ручное редактирование требуется для создания основных копий, которые можно использовать с сгенерированным кодом из различных релизов. Для примера:
The rtwtypes.h
файл, сгенерированный релизами до и включая R2013a, содержит контрольную сумму.
/* This ID is used to detect inclusion of an incompatible rtwtypes.h */ #define RTWTYPES_ID_C08S16I32L64N64F0
rtwtypes.h
файл, который необходимо включить в интегрирование, скопируйте соответствующий #define
оператор в главную копию rtwtypes.h
.В R2015a определения пересечения нулем перешли от rtwtypes.h
в zero_crossing_types.h
. Как создать rtwtypes.h
файл, который совместим с сгенерированным кодом модели из различных релизов, в вашей главной копии rtwtypes.h
, вставьте этот оператор.
#include "zero_crossing_types.h"
rtwtypes.h
что zero_crossing_types.h
обеспечивает.
crossReleaseImport
(Embedded Coder) | sharedCodeUpdate
(Embedded Coder)