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

Не следует автоматически компилировать код, создавать make-файл или создавать пакеты кода и артефактов.
set_param('rtwdemo_codebuild', 'GenerateMakefile', 'off'); set_param('rtwdemo_codebuild', 'PackageGeneratedCodeAndArtifacts', 'off');
Выполните команду создания кода.
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');
Запустите 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 -setup).
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
Выберите файл создания шаблона для текущей платформы.
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');
С помощью файлов CMakeLists.txt можно использовать стороннее средство CMake для создания makefile или рабочих областей для выбранной среды компилятора. Если на компьютере разработки установлена программа CMake, создайте исполняемый файл, выполнив следующие команды в окне команд MATLAB:
cd(rtwdemo_codebuild_top_component_folder)
!cmake .
!cmake --build .