Когда вы генерируете предварительно скомпилированный, непредварительно скомпилированный, и библиотеки модели - ссылки, можно управлять местоположением библиотеки и именем библиотеки при помощи параметров конфигурации. Эти параметры управляют значениями в сгенерированных make-файлах во время сборок модели:
Для процессов сборки, которые используют подход набора инструментальных средств, управляйте сгенерированным местоположением библиотеки при помощи параметра конфигурации TargetPreCompLibLocation
.
Для процессов сборки, которые используют подход make-файла шаблона, управляйте сгенерированным местоположением библиотеки при помощи параметра конфигурации TargetPreCompLibLocation
и управляйте сгенерированным именем библиотеки при помощи параметра конфигурации TargetLibSuffix
.
Используйте параметры управления библиотеки для:
Задайте местоположение предварительно скомпилированных библиотек, таких как библиотеки blockset или библиотека блоков Simulink® Coder™. Как правило, цель кросс-скомпилировала версии этих библиотек и размещает их в целевую папку.
Управление суффикс применилось к именам файлов библиотеки (например, _target.a
или _target.lib
).
Цели могут установить параметры в коллбэке выбора системного конечного файла (STF). Например:
function mytarget_select_callback_handler(varargin) hDig=varargin{1}; hSrc=varargin{2}; slConfigUISetVal(hDig, hSrc, 'TargetPreCompLibLocation',... 'c:\mytarget\precomplibs'); slConfigUISetVal(hDig, hSrc, 'TargetLibSuffix',... '_target.library');
TMF имеет соответствующие лексемы расширения:
|>EXPAND_LIBRARY_LOCATION<| |>EXPAND_LIBRARY_SUFFIX<|
Также можно использовать вызов функции set_param
. Например:
set_param(model,'TargetPreCompLibLocation',... 'c:\mytarget\precomplibs');
Если ваша модель содержит модели, на которые ссылаются, можно использовать сделать опцию USE_MDLREF_LIBPATHS
, чтобы управлять, копируются ли библиотеки, пользовавшиеся моделями, на которые ссылаются, в папку сборки родительской модели. Для получения дополнительной информации смотрите Управление Местоположение Библиотек Модели - ссылки.
Подход набора инструментальных средств для сборок модели не использует значение параметра конфигурации TargetLibSuffix
, чтобы выбрать имя файла библиотеки
и suffix
. extension
С подходом набора инструментальных средств итоговое бинарное имя состоит из
, modelname
и compilername
, обеспеченного описанием инструмента сборки в определении набора инструментальных средств:extension
model_compilername
.extension
Можно идентифицировать статическое расширение файла библиотеки из описания инструмента сборки в определении набора инструментальных средств. Чтобы получить эту информацию для набора инструментальных средств по умолчанию, используйте эту процедуру:
Получите имя набора инструментальных средств по умолчанию. Например, введите:
tc_name = coder.make.getDefaultToolchain()
Получите указатель набора инструментальных средств по умолчанию. Например, введите:
tc = coder.make.getToolchainInfoFromRegistry(tc_name)
Получите указатель на объект набора инструментальных средств. Например, введите:
tool_archiver = tc.getBuildTool('Archiver');
Получите расширение. Например, введите:
ext_archiver = tool_archiver.getFileExtension('Static Library');
Если вы не устанавливаете параметр TargetLibSuffix
, обрабатываете make-файл по шаблону, и подходы набора инструментальных средств производят то же статическое имя файла библиотеки
. Смотрите Настраивают Суффикс Файла Библиотеки и Тип файла.extension
Используйте параметр конфигурации TargetPreCompLibLocation
для:
Замените предварительно скомпилированное местоположение библиотеки, заданное в файле rtwmakecfg.m
(см. Использование rtwmakecfg.m API, чтобы Настроить Сгенерированные Make-файлы для деталей),
Предварительно скомпилируйте и распределите целевые версии библиотек продукта (например, продукт DSP System Toolbox™)
Для предварительно скомпилированной библиотеки, такой как blockset библиотека или библиотека блоков Simulink Coder, местоположение, заданное в rtwmakecfg.m
, обычно является местоположением, характерным для blockset или продукта Simulink Coder. Генератор кода ожидает, что библиотека существует в этом месте и ссылках против библиотеки во время сборок.
Для некоторых приложений, таких как пользовательские цели, желательно определять местоположение предварительно скомпилированных библиотек в целевом или другом альтернативном месте, а не в месте, заданном в rtwmakecfg.m
. Для пользовательской цели генератор кода ожидает, что целевой кросс-компилятор создает библиотеку, и вы размещаете библиотеку в целевое местоположение. Скомпилируйте и разместите библиотеки, поддержанные к установленному сроку в целевом месте, таким образом, они могут использоваться во время процесса сборки.
Можно настроить параметр TargetPreCompLibLocation
в его избранном коллбэке. Путь, который вы задаете для параметра, должен быть полностью определенным, абсолютным путем к местоположению библиотеки. Относительные пути не поддержаны. Например:
slConfigUISetVal(hDlg, hSrc, 'TargetPreCompLibLocation',... 'c:\mytarget\precomplibs');
Также вы устанавливаете параметр с вызовом функции set_param
. Например:
set_param(model,'TargetPreCompLibLocation',... 'c:\mytarget\precomplibs');
Во время генерации make-файла процесс сборки заменяет лексемы на местоположение из файла rtwmakecfg.m
. Например, если именем библиотеки в файле rtwmakecfg.m
является 'rtwlib'
, подход сборки make-файла шаблона расширяет лексему от:
LIBS += |>EXPAND_LIBRARY_LOCATION<|\|>EXPAND_LIBRARY_NAME<|\ _target.library
к:
LIBS += c:\mytarget\precomplibs\rtwlib_target.library
По умолчанию TargetPreCompLibLocation
является пустым символьным вектором. Процесс сборки использует местоположение в rtwmakecfg.m
для маркерной замены.
На платформах кроме платформы Apple Macintosh , при создавании модели, которая использует модели, на которые ссылаются, процесс сборки по умолчанию включает:
Скопируйте библиотеки, которыми модели, на которые ссылаются, пользуются к папке сборки родительской модели.
Присвойте имена файлов библиотек к MODELREF_LINK_LIBS
в сгенерированном make-файле.
Например, если модель включает модель sub
, на которую ссылаются, процесс сборки присваивает имя библиотеки sub_rtwlib.lib
MODELREF_LINK_LIBS
. Процесс сборки копирует файл библиотеки в папку сборки родительской модели. Это определение затем используется в строке последней ссылки, которая соединяет библиотеку в конечный продукт (обычно исполняемый файл). Этот метод минимизирует длину строки ссылки.
На платформе Macintosh, и опционально на других платформах, процесс сборки включает:
Никакое копирование библиотек, которыми модели, на которые ссылаются, пользуются к папке сборки родительской модели.
Присвойте относительные пути и имена файлов библиотек к MODELREF_LINK_LIBS
в сгенерированном make-файле.
При использовании этого метода процесс сборки присваивает относительный путь, такой как ../slprj/grt/sub/sub_rtwlib.lib
к MODELREF_LINK_LIBS
. Процесс сборки использует путь, чтобы получить доступ к файлу библиотеки во время ссылки.
Чтобы измениться на поведение не по умолчанию на платформах кроме платформы Macintosh, выберите Configuration Parameters> Code Generation> поле команды Make. Войдите:
make_rtw USE_MDLREF_LIBPATHS=1
Если вы задаете другой Делать аргументы команды, такие как OPTS="-g"
, порядок, в котором вы задаете, несколько аргументов не имеет значения.
Чтобы возвратиться к поведению по умолчанию, установите USE_MDLREF_LIBPATHS
на 0 или удалите его.
С подходом make-файла шаблона для сборок модели использование параметр конфигурации TargetLibSuffix
, чтобы управлять суффиксом, применился к именам библиотеки (например, _target.lib
или _target.a
). Заданная суффиксная схема должна включать период (.). Можно применить TargetLibSuffix
к следующим библиотекам:
Библиотеки, от которых цель зависит, как задано в API rtwmakecfg.m
. Можно использовать TargetLibSuffix
, чтобы изменить суффикс и предварительно скомпилированных и непредварительно скомпилированных библиотек, сконфигурированных от API rtwmakecfg
. Для получения дополнительной информации смотрите Использование rtwmakecfg.m API, чтобы Настроить Сгенерированные Make-файлы.
В этом случае цель может установить параметр в своем избранном коллбэке. Например:
slConfigUISetVal(hDlg, hSrc, 'TargetLibSuffix',... '_target.library');
Также можно использовать вызов функции set_param
. Например:
set_param(model,'TargetLibSuffix','_target.library');
Во время преобразования TMF к make-файлу процесс сборки заменяет маркерный |>EXPAND_LIBRARY_SUFFIX<|
на заданный суффикс. Например, если именем библиотеки, заданным в файле rtwmakecfg.m
, является 'rtwlib'
, TMF расширяется от:
LIBS += |>EXPAND_LIBRARY_LOCATION<|\|>EXPAND_LIBRARY_NAME<|\ |>EXPAND_LIBRARY_SUFFIX<|
к:
LIBS += c:\mytarget\precomplibs\rtwlib_target.library
По умолчанию TargetLibSuffix
установлен в пустой символьный вектор. В этом случае процесс сборки заменяет маркерный |>EXPAND_LIBRARY_SUFFIX<|
на пустой символьный вектор.
Образцовые библиотеки создаются с моделью - ссылкой. Для этих случаев сопоставленные переменные make-файла не требуют лексемы |>EXPAND_LIBRARY_SUFFIX<|
. Вместо этого процесс сборки включает TargetLibSuffix
неявно. Например, для топ-модели под названием topmodel
с моделями, на которые ссылаются, под названием refmodel1
и refmodel2
, TMF топ-модели расширен от:
MODELLIB = |>MODELLIB<| MODELREF_LINK_LIBS = |>MODELREF_LINK_LIBS<|
к:
MODELLIB = topmodellib_target.library MODELREF_LINK_LIBS = \ refmodel1_rtwlib_target.library refmodel2_rtwlib_target.library
По умолчанию параметр TargetLibSuffix
является пустым символьным вектором. В этом случае процесс сборки выбирает суффикс по умолчанию для этих трех лексем с помощью расширения файла .lib
на хостах Windows® и .a
на хостах UNIX®. Для библиотек модели - ссылки суффикс по умолчанию также включает _rtwlib
. Например, на хосте Windows, расширенные значения make-файла:
MODELLIB = topmodellib.lib MODELREF_LINK_LIBS = refmodel1_rtwlib.lib refmodel2_rtwlib.lib