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

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

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

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

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

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

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

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

  2. Откройте приложение MATLAB CODER. На вкладке MATLAB Toolstrip Apps, под Генерацией кода, кликают по значку приложения MATLAB CODER.

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

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

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

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

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

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

  7. Нажмите Generate. Нажмите Далее, чтобы перейти к странице 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' 'иерархический'...
'имя файла' 'zippedsrcs'});
Включайте все заголовочные файлы, найденные на включать пути в zip-файле (а не минимальные заголовочные файлы, требуемые создавать код)packNGo(buildInfo, {'minimalHeaders' false});
Сгенерируйте предупреждения для ошибок анализа и недостающих файловpackNGo (buildInfo, {'ignoreParseError' верный...
'ignoreFileMissing', верный});

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

Выберите структуру для zip-файла

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

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

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

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

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

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

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

Была ли эта тема полезной?