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

В этом примере показано, как можно переместить сгенерированный код и скомпилировать его в другой среде разработки. Используйте 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 .

Смотрите также

|

Похожие темы