Скомпилируйте код в другой среде разработки

В этом примере показано, как можно переместить сгенерированный код и скомпилировать его в другой среде разработки. Используйте packNGo, чтобы создать ZIP-файл, содержащий сгенерированный исходный код, информацию о сборке и файлы строения CMake. В целевой среде разработки используйте функцию codebuild для создания окончательной библиотеки или исполняемого файла.

Сконфигурируйте модель

Откройте модель.

rtwdemo_codebuild

Не компилируйте автоматически код, сгенерируйте make-файл или упакуйте сгенерированный код и программные продукты.

set_param('rtwdemo_codebuild', 'GenerateMakefile', 'off');
set_param('rtwdemo_codebuild', 'PackageGeneratedCodeAndArtifacts', 'off');

Сгенерируйте файлы строения кода и CMake

Запустите команду генерации кода.

slbuild('rtwdemo_codebuild');
### Starting serial model reference code generation build
### Successfully updated the model reference code generation target for: rtwdemo_codebuild_ref
### Starting build procedure for: rtwdemo_codebuild
### Successful completion of code generation for: rtwdemo_codebuild

Build Summary

Code generation targets built:

Model                  Action          Rebuild Reason                           
================================================================================
rtwdemo_codebuild_ref  Code generated  rtwdemo_codebuild_ref.c does not exist.  

Top model targets built:

Model              Action          Rebuild Reason                                    
=====================================================================================
rtwdemo_codebuild  Code generated  Code generation information file does not exist.  

2 of 2 models built (0 models already up to date)
Build duration: 0h 0m 29.238s

Сгенерируйте файлы строения CMakeLists.txt.

buildFolder = RTW.getBuildDir('rtwdemo_codebuild').BuildDirectory;
codebuild(buildFolder, 'BuildMethod', 'cmake');

Упакуйте сгенерированный код и файлы строения CMake

Запустите packNGo, упаковав файлы иерархически.

packNGo(buildFolder, 'packType', 'hierarchical', 'nestedZipFiles', false);

Переход к другой среде разработки

Это необязательный шаг. Для примера, если текущая среда разработки является компьютером Linux, можно скопировать zip- файла на компьютер Windows, а затем выполнить последующие шаги на этом компьютере.

Разархивируйте исходный код и создавайте информационные файлы

Разархивируйте файлы.

rtwdemo_codebuild_files = unzip('rtwdemo_codebuild.zip');

Идентифицируйте папку, содержащую разархивированный код для верхнего компонента.

rtwdemo_codebuild_top_component_folder = fileparts(rtwdemo_codebuild_files{1});

Создайте исполняемый файл с использованием набора инструментов по умолчанию

Идентифицируйте набор инструментов по умолчанию (на основе компилятора, выбранного mex -настройка).

defaultToolchain = coder.make.getDefaultToolchain;

Создайте исполняемый файл.

codebuild(rtwdemo_codebuild_top_component_folder, 'BuildMethod', defaultToolchain);

Проверьте, что создается исполняемый файл.

dir(fullfile(rtwdemo_codebuild_top_component_folder, '..', 'rtwdemo_codebuild*'))
rtwdemo_codebuild.exe      
rtwdemo_codebuild_grt_rtw  

Создайте исполняемый файл с использованием make-файла шаблона по умолчанию

Выберите шаблон make-файла для текущей платформы.

if ispc
    % With ert_vcx64.tmf, you must have Microsoft Visual C++ installed. If
    % it is not installed, specify ert_lcc64.tmf to use lcc-win64 instead.
    templateMakefile = 'ert_vcx64.tmf';
else
    templateMakefile = 'ert_unix.tmf';
end

Создайте исполняемый файл.

codebuild(rtwdemo_codebuild_top_component_folder, 'BuildMethod', templateMakefile);

Создание общей библиотеки

В Windows создайте файл определения, который задает экспортированные символы.

if ispc
    exportsFile = fullfile...
        (rtwdemo_codebuild_top_component_folder, 'rtwdemo_codebuild.def');
    fid = fopen(exportsFile, 'w');
    fwrite(fid, ['EXPORTS' newline]);
    fwrite(fid, ['rtwdemo_codebuild_initialize' newline]);
    fwrite(fid, ['rtwdemo_codebuild_step' newline]);
    fwrite(fid, ['rtwdemo_codebuild_terminate' newline]);
    fclose(fid);
end

Создайте общую библиотеку.

codebuild(rtwdemo_codebuild_top_component_folder, 'BuildVariant', 'SHARED_LIBRARY');

Создание статической библиотеки

codebuild(rtwdemo_codebuild_top_component_folder, 'BuildVariant', 'STATIC_LIBRARY');

Использование файлов строения CMake

С помощью файлов CMakeLists.txt можно использовать стороннюю программу CMake для генерации файлов make или рабочих областей для окружения компилятора по вашему выбору. Если CMake установлен на вашем компьютере разработчика, создайте исполняемый файл, запустив эти команды в Командном окне MATLAB:

  cd(rtwdemo_codebuild_top_component_folder)
  !cmake .
  !cmake --build .

См. также

|

Похожие темы