Управляйте местоположением библиотеки и называющий во время сборки

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

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

  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. Смотрите настраивают суффикс файла библиотеки и тип файла (Simulink Coder).

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

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

Для предварительно скомпилированной библиотеки, такой как 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 для маркерной замены.

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

Процесс сборки присваивает путь, такой как ../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