exponenta event banner

Управление расположением библиотеки и именованием во время построения

При создании предварительно скомпилированных, некомпилированных и модельных библиотек ссылок можно управлять расположением библиотеки и ее именем с помощью параметров конфигурации. Эти параметры управляют значениями в созданных makefile во время построения модели:

  • Для процессов построения, использующих подход, основанный на цепочке инструментов, управление расположением созданной библиотеки осуществляется с помощью TargetPreCompLibLocation параметр конфигурации.

  • Для процессов построения, использующих подход makefile шаблона, управляйте расположением созданной библиотеки с помощью TargetPreCompLibLocation параметр конфигурации и управление созданным именем библиотеки с помощью TargetLibSuffix параметр конфигурации.

Параметры управления библиотекой

Используйте параметры управления библиотекой для:

  • Укажите расположение предварительно скомпилированных библиотек, таких как библиотеки блоков или библиотека блоков 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');

Примечание

Если модель содержит ссылочные модели, можно использовать опцию make USE_MDLREF_LIBPATHS для управления копированием библиотек, используемых ссылочными моделями, в папку сборки родительской модели. Дополнительные сведения см. в разделе Расположение библиотек привязок модели.

Определение типа файла библиотеки для подхода «Схема инструментов»

Подход к цепочке инструментов для построений модели не использует значение TargetLibSuffix параметр конфигурации для выбора имени файла библиотеки suffix и extension.

При использовании подхода toolchain окончательное двоичное имя состоит из modelname, compilername, и extension в описании инструмента сборки в определении цепочки инструментов:

model_compilername.extension

Расширение имени файла статической библиотеки можно определить из описания инструмента построения в определении цепочки инструментов. Чтобы получить эту информацию для используемой по умолчанию цепочки инструментов, выполните следующие действия.

  1. Получение имени цепочки инструментов по умолчанию. Например, введите:

    tc_name = coder.make.getDefaultToolchain()
  2. Получение дескриптора цепочки инструментов по умолчанию. Например, введите:

    tc = coder.make.getToolchainInfoFromRegistry(tc_name)
  3. Получите маркер перемещения к объекту цепочки инструментов. Например, введите:

    tool_archiver = tc.getBuildTool('Archiver');
  4. Получи добавочный номер. Например, введите:

    ext_archiver = tool_archiver.getFileExtension('Static Library');

Примечание

Если не установить TargetLibSuffix параметры, makefile шаблона и подходы к цепочке инструментов создают одно и то же имя файла статической библиотеки extension.

Укажите расположение предварительно скомпилированных библиотек

Используйте TargetPreCompLibLocation параметр конфигурации для:

  • Переопределить расположение предварительно скомпилированной библиотеки, указанное в rtwmakecfg.m (дополнительные сведения см. в разделе Использование API rtwmakecfg.m для настройки созданных Makefiles)

  • Предварительная компиляция и распространение целевых версий библиотек продуктов (например, системы DSP Toolbox™ продукта)

Для предварительно скомпилированной библиотеки, такой как библиотека блоков или библиотека блоков Simulink Coder, расположение указано в rtwmakecfg.m как правило, это местоположение, специфичное для блока или продукта Simulink Coder. Генератор кода ожидает, что библиотека существует в этом расположении и связывается с библиотекой во время построения.

Для некоторых приложений, таких как пользовательские конечные объекты, предпочтительно размещать предварительно скомпилированные библиотеки в целевом или другом альтернативном расположении, а не в расположении, указанном в rtwmakecfg.m. Для пользовательского целевого объекта генератор кода ожидает, что целевой кросс-компилятор создаст библиотеку, и вы поместите библиотеку в целевое местоположение. Скомпилируйте и разместите библиотеки, поддерживаемые целевым объектом, в определенном расположении, чтобы их можно было использовать в процессе построения.

Вы можете настроить TargetPreCompLibLocation в его ответном вызове select. Путь, указанный для параметра, должен быть полным, абсолютным путем к расположению библиотеки. Относительные пути не поддерживаются. Например:

slConfigUISetVal(hDlg, hSrc, 'TargetPreCompLibLocation',...
'c:\mytarget\precomplibs');

Можно также задать параметр с помощью вызова set_param функция. Например:

set_param(model,'TargetPreCompLibLocation',...
'c:\mytarget\precomplibs');

Во время создания makefile процесс сборки заменяет маркеры расположением из rtwmakecfg.m файл. Например, если имя библиотеки в rtwmakecfg.m файл - 'rtwlib', подход создания makefile шаблона расширяет маркер из:

LIBS += |>EXPAND_LIBRARY_LOCATION<|\|>EXPAND_LIBRARY_NAME<|\
_target.library

кому:

LIBS += c:\mytarget\precomplibs\rtwlib_target.library

По умолчанию TargetPreCompLibLocation - пустой символьный вектор. В процессе построения используется расположение в rtwmakecfg.m для замены маркера.

Расположение библиотек ссылок на модели

Процесс построения назначает путь, такой как ../slprj/grt/sub/sub_rtwlib.lib кому MODELREF_LINK_LIBS. В процессе построения используется путь для получения доступа к файлу библиотеки во время ссылки.

Управление суффиксом, примененным к именам файлов библиотеки

Используя подход makefile шаблона для построений модели, используйте TargetLibSuffix параметр конфигурации для управления суффиксом, применяемым к именам библиотек (например, _target.lib или _target.a). Указанная схема суффиксов должна включать точку (.). Вы можете применить TargetLibSuffix в следующие библиотеки:

  • Библиотеки, от которых зависит цель, как указано в rtwmakecfg.m API. Вы можете использовать TargetLibSuffix для изменения суффикса предкомпилированных и некомпилированных библиотек, настроенных из rtwmakecfg API. Дополнительные сведения см. в разделе Использование API rtwmakecfg.m для настройки созданных Makefiles.

    В этом случае целевой объект может задать параметр в своем ответном вызове выбора. Например:

    slConfigUISetVal(hDlg, hSrc, 'TargetLibSuffix',...
    '_target.library');

    Кроме того, можно использовать вызов set_param функция. Например:

    set_param(model,'TargetLibSuffix','_target.library');

    Во время преобразования TMF в makefile процесс сборки заменяет маркер |>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<| с пустым символьным вектором.

  • Библиотеки моделей, созданные со ссылкой на модель. Для этих случаев связанные переменные makefile не требуют |>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 расширенные значения makefile:

    MODELLIB           = topmodellib.lib
    MODELREF_LINK_LIBS = refmodel1_rtwlib.lib refmodel2_rtwlib.lib