Упаковать код для других сред разработки

Когда упаковать код

Чтобы перенести файлы сгенерированного кода в другую среду разработки, такую как система или интегрированная среда разработки (IDE), которая не включает MATLAB®, использовать packNGo функция в командной строке или опция Package в MATLAB Coder™ приложения. Файлы упакованы в сжатый файл, который можно переместить и распаковать с помощью стандартной zip утилиты.

Смотрите Код, сгенерированный пакетом с использованием приложения MATLAB Coder и Код, сгенерированный пакетом, в командной строке.

Упаковать сгенерированный код используя приложение MATLAB Coder

Этот пример показов, как упаковать сгенерированный код в zip- файла для перемещения с помощью опции Package в приложении MATLAB Coder. По умолчанию MATLAB Coder создает zip- файла в текущей рабочей папке.

  1. В локальной папке с возможностью записи, например c:\work, напишите функцию foo который принимает два двойных входа.

    function y = foo(A,B)
      y = A + B;
    end

  2. Откройте приложение MATLAB Coder на вкладке Apps MATLAB Toolstrip, в разделе Code Generation щелкните значок приложения MATLAB Coder.

  3. На странице Select Source Files введите имя функции точки входа foo. Щелкните Next, чтобы перейти на страницу Define Input Types.

  4. Задайте, что вводит A и B являются скаляры двойниками. Щелкните Next, чтобы перейти на страницу Check for Run-Time Issues.

  5. Проверьте наличие проблем во время выполнения. В диалоговом окне Check for Run-Time Issues введите код, который вызывает foo со скалярными двойными входами. Для примера:

    foo(1,2)
    Нажмите Check for Issues.

    Чтобы проверить на проблемы во время выполнения, приложение генерирует и запускает MEX-функцию. Приложение не находит проблем для foo. Щелкните Next, чтобы перейти на страницу Generate Code.

  6. В диалоговом окне Generate установите значение Build Type Source Code, Static Library, Dynamic Library, или Executable. Вы не можете упаковать код, сгенерированный для целей MEX.

  7. Нажмите Generate. Щелкните Next, чтобы перейти на страницу Finish Workflow.

  8. На странице Finish Workflow нажмите Package.

  9. В диалоговом окне Package укажите имя файла пакета и тип упаковки. По умолчанию приложение выводит имя файла пакета из имени проекта. Приложение сохраняет файл в текущей рабочей папке. По умолчанию приложение упаковывает сгенерированные файлы как одну, плоскую папку. В данном примере используйте значения по умолчанию, а затем нажмите Save.

    Этот zip-файл содержит код С и файлы заголовков, необходимые для перемещения. Он не содержит:

  10. Осмотрите содержимое foo_pkg.zip в рабочей папке, чтобы убедиться, что она готова к перемещению в целевую систему. В зависимости от инструмента zip, который вы используете, вы потенциально можете открыть и просмотреть файл, не распаковывая его.

    Теперь можно переместить полученный zip-файл в нужную среду разработки и распаковать файл.

Упакуйте сгенерированный код в командной строке

В этом примере показов, как упаковать сгенерированный код в zip- файла для перемещения, используя packNGo функцию в командной строке.

  1. В локальной папке с возможностью записи, например c:\work, напишите функцию foo который принимает два двойных входа.

    function y = foo(A,B)
      y = A + B;
    end

  2. Сгенерируйте статическую библиотеку для foo функций. (packNGo не упаковывает код MEX-функции.)

    codegen -report -config:lib foo -args {0,0}

    codegen генерирует код в c:\work\codegen\lib\foo папка.

  3. Загрузите buildInfo объект.

    load('c:\work\codegen\lib\foo\buildInfo.mat')

  4. Создайте zip- файла.

    packNGo(buildInfo, 'fileName', 'foo.zip');
    Кроме того, используйте обозначение:
    buildInfo.packNGo('fileName', 'foo.zip');

    packNGo функция создает zip- файла, foo.zip, в текущей рабочей папке. Этот zip-файл содержит код С и файлы заголовков, необходимые для перемещения. Он не содержит:

    В этом примере вы задаете только имя файла. Вы также можете задать дополнительные опции упаковки. См. раздел «Задание опций packNGo».

  5. Осмотрите содержимое foo.zip чтобы убедиться, что он готов к перемещению в систему назначения. В зависимости от инструмента zip, который вы используете, вы потенциально можете открыть и просмотреть файл, не распаковывая его. Если вам нужно распаковать файл и вы упаковали файлы сгенерированного кода как иерархическую структуру, вам нужно будет распаковать основной и вторичный zip-файлы. При распаковке вторичных zip-файлов сохраняются относительные пути к файлам.

    Теперь можно переместить полученный zip-файл в нужную среду разработки и распаковать файл.

Задайте packNGo Опций

Можно задать опции для packNGo функция.

КомуОпределить
Измените структуру упаковки файлов на иерархическуюpackNGo(buildInfo, 'packType' 'hierarchical');
Измените структуру упаковки файлов на иерархическую и переименуйте основной zip-файлpackNGo (buildInfo, 'packType' 'иерархический'...
'fileName' 'zippedsrcs');
Включите все заголовочные файлы, найденные в пути включения в zip-файл (а не минимальные заголовочные файлы, необходимые для создания кода)packNGo(buildInfo, 'minimalHeaders' false);
Сгенерируйте предупреждения для ошибок анализа и отсутствующих файловpackNGo (buildInfo, 'ignoreParseError' true...
'ignoreFileMissing' true);

Для получения дополнительной информации см. packNGo.

Выбор структуры для ZIP- Файла

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

ЕслиИспользовать
Вы перемещаете файлы в IDE, которая не использует сгенерированный make-файл, или код не зависит от относительного расположения необходимых статических файлов Единая, плоская структура папки
Целевая среда разработки должна поддерживать структуру папок исходного окружения, потому что она использует сгенерированный make-файл, или код зависит от относительного расположения файловИерархическая структура

Если используется иерархическая структура, packNGo функция создает два уровня zip- файлов. Существует основной zip- файла, который, в свою очередь, содержит следующие вторичные zip- файлов:

  • mlrFiles.zip - файлы в вашем matlabroot дерево папок

  • sDirFiles.zip - файлы в папке сборки и в ней, где вы инициировали генерацию кода

  • otherFiles.zip - необходимые файлы не в matlabroot или start деревья папок

Пути для вторичных zip- файлов относятся к корневой папке основного zip- файла, поддерживая структуру исходной папки разработки.