Преобразование codegen Команда на эквивалентный проект MATLAB Coder

Вы можете использовать codegen команда со -toproject опция для преобразования codegen команда к эквивалентному MATLAB® Coder™ файл проекта. Затем можно сгенерировать код из файла проекта при помощи другого codegen команда или приложение MATLAB Coder.

Для примера, чтобы преобразовать a codegen команда с входными параметрами input_arguments в файл проекта myProject.prj, выполните:

codegen input_arguments -toproject myProject.prj

Входные параметры в codegen включают:

  • Имена функций точки входа

  • Входные определения типов, заданные при помощи -args опция

  • Опции генерации кода, включая параметры, заданные в объектах строения

  • Имена пользовательских исходных файлов, включаемых в сгенерированный код

Можно также использовать -toproject опция для преобразования неполного codegen команда в файл проекта. Например, чтобы создать файл проекта myProjectTemplate.prj который содержит только параметры генерации кода, сохраненные в объекте строения cfg, выполните:

codegen -config cfg -toproject myProjectTemplate.prj
myProjectTemplate.prj не содержит спецификаций функций точки входа или входных типов. Итак, вы не можете сгенерировать код из этого файла проекта. Можно открыть myProjectTemplate.prj в приложении MATLAB Coder и использовать его как шаблон для создания полных файлов проекта, которые можно использовать для генерации кода.

Примечание

Выполнение codegen команда со -toproject опция не генерирует код. Он создает только файл проекта.

Пример: Преобразование полного codegen Команда в файл проекта

Задайте функцию MATLAB, myadd, это возвращает сумму двух значений.

function y = myadd(u,v) %#codegen
y = u + v;
end

Создайте coder.CodeConfig объект для генерации статической библиотеки. Задайте TargetLang на 'C++'.

cfg = coder.config('lib');
cfg.TargetLang = 'C++';

В командной строке MATLAB создайте и запустите codegen команда. Задайте myadd как функцию точки входа. Задайте входы, чтобы myadd как матрицы переменного размера типа double размерности которых неограниченны. Задайте cfg как объект строения кода. Включите -toproject опция для преобразования codegen команда к эквивалентному файлу проекта MATLAB Coder с именем myadd_project.prj.

codegen -config cfg myadd -args {coder.typeof(1,[Inf,Inf]),coder.typeof(1,[Inf,Inf])} -toproject myadd_project.prj
Project file 'myadd_project.prj' was successfully created.
Open Project

Генератор кода создает файл проекта myadd_project.prj в текущей рабочей папке. Управление codegen с -toproject опция не генерирует код. Он создает только файл проекта.

Сгенерируйте код из myadd_project.prj при помощи другого codegen команда.

codegen myadd_project.prj

Генератор кода производит статическую функцию библиотеки C++ myadd в work\ codegen\lib\myadd папка, где work - ваша текущая рабочая директория.

Пример: Преобразование неполного codegen Команда в файл проекта шаблона

Создайте coder.CodeConfig объект для генерации статической библиотеки. Задайте TargetLang на 'C++'.

cfg = coder.config('lib');
cfg.TargetLang = 'C++';

В командной строке MATLAB создайте и запустите codegen команда. Задайте cfg как объект строения кода. Включите -toproject опция для преобразования codegen команда к эквивалентному файлу проекта MATLAB Coder с именем myProjectTemplate.prj.

codegen -config cfg -toproject myProjectTemplate.prj
Project file 'myProjectTemplate.prj' was successfully created.
Open Project

Теперь можно открывать myProjectTemplate.prj в приложении MATLAB Coder и использовать его как шаблон для создания полных файлов проекта, которые можно использовать для генерации кода.

Ограничения

Когда вы используете codegen команда со -toproject опция, эти ограничения применяются:

  • Экспорт CodeTemplate параметр coder.EmbeddedCodeConfig объект в файл проекта не поддерживается.

  • Предположим, что ваш codegen команда для генерации MEX-функции использует coder.Constant для определения постоянного входа, являющегося fi (Fixed-Point Designer) объект obj.

    Определенные fi свойства объекта активируются другими свойствами. Когда вы создаете fi Объект для этих свойств заданы значения по умолчанию, если вы не измените их явно. В obj, вы устанавливаете одно или несколько свойств, которые не включены, в значения, отличные от значений по умолчанию. См. Раздел Свойств объектов (Fixed-Point Designer).

    Вы преобразуете это codegen команда в файл проекта при помощи -toproject опция. Вы создаете файл проекта и генерируете MEX-функцию. Когда ты проходишь obj в качестве постоянного входного параметра сгенерированной MEX-функции и запуска MEX MEX может выдать ошибку.

    Чтобы исправить эту проблему, вы должны задать свойства obj которые не включены к значениям по умолчанию перед передачей в MEX-функцию. Для этого задайте новую fi obj_new объекта:

    a = mat2str(obj);
    obj_new = eval(a);

    Передайте obj_new как постоянный вход в сгенерированную MEX-функцию.

См. также

Похожие темы