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

При создании предварительно скомпилированных, не предварительно скомпилированных и моделей-ссылок можно управлять расположением библиотеки и именем библиотеки с помощью параметров конфигурации. Эти параметры управляют значениями в сгенерированных 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');

Примечание

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

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

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

При подходе набора инструментальных средств окончательное двоичное имя состоит из 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 подходы к параметрам, шаблонам make-файла и набору инструментальных средств создают одно и то же имя файла статической библиотеки extension.

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

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

Для предварительно скомпилированной библиотеки, такой как библиотека blockset или библиотека блоков Simulink Coder, расположение, заданное в rtwmakecfg.m обычно является местоположением, специфичным для библиотеки или продукта 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 для замены маркера.

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

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

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

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

  • Библиотеки, от которых зависит целевой объект, как указано в rtwmakecfg.m API. Можно использовать TargetLibSuffix для изменения суффикса предварительно скомпилированных и не предварительно скомпилированных библиотек, сконфигурированных из rtwmakecfg API. Для получения дополнительной информации см. раздел Использование 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