주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

다른 개발 환경에서 코드 컴파일하기

이 예제는 생성된 코드의 위치를 변경하고 다른 개발 환경에서 컴파일하는 방법을 보여줍니다. packNGo를 사용하여 생성된 소스 코드, 빌드 정보 및 CMake 구성 파일이 포함된 ZIP 파일을 만드십시오. 타깃 개발 환경에서 codebuild 함수를 사용하여 최종 라이브러리 또는 실행 파일을 빌드하십시오.

모델 구성

모델을 엽니다.

CodeBuildModel

코드를 자동으로 컴파일하거나, makefile을 생성하거나, 생성된 코드와 아티팩트를 패키징하지 마십시오.

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

코드 및 CMake 구성 파일 생성

코드 생성 명령을 실행합니다.

slbuild('CodeBuildModel');
### Starting serial model reference code generation build.
### Model reference code generation target for CodeBuildRefModel is up to date.
### Starting build procedure for: CodeBuildModel
### Generated code for 'CodeBuildModel' is up to date because no structural, parameter or code replacement library changes were found.
### Successful completion of code generation for: CodeBuildModel

Build Summary

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

CMakeLists.txt 구성 파일을 생성합니다.

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

생성된 코드 및 CMake 구성 파일 패키징

packNGo를 실행하여 파일을 계층 구조에 따라 압축합니다.

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

다른 개발 환경으로 전환하기

이 단계는 선택 사항입니다. 예를 들어, 현재 개발 환경이 Linux 컴퓨터인 경우, zip 파일을 윈도우 컴퓨터로 복사한 다음 해당 컴퓨터에서 후속 단계를 수행할 수 있습니다.

소스 코드와 빌드 정보 파일 압축 해제

파일 압축을 풀어주세요.

CodeBuildModel_files = unzip('CodeBuildModel.zip');

상위 컴포넌트의 압축을 푼 코드가 들어 있는 폴더를 확인하십시오.

CodeBuildModel_top_component_folder = fileparts(CodeBuildModel_files{1});

기본 툴체인을 사용하여 실행 파일 생성

기본 툴체인을 확인합니다(mex -setup 명령어로 선택한 컴파일러를 기준으로 함).

defaultToolchain = coder.make.getDefaultToolchain;

실행 파일을 빌드합니다.

codebuild(CodeBuildModel_top_component_folder, 'BuildMethod', defaultToolchain);

실행 파일이 생성되었는지 확인하십시오.

dir(fullfile(CodeBuildModel_top_component_folder, '..', 'CodeBuildModel*'))
CodeBuildModel.exe      CodeBuildModel_grt_rtw  

기본 템플릿 Makefile을 사용하여 실행 파일 생성하기

현재 플랫폼에 맞는 템플릿 makefile을 선택하십시오.

if ispc
    % With ert_vcx64.tmf, you must have Microsoft Visual C++ installed.
    templateMakefile = 'ert_vcx64.tmf';
else
    templateMakefile = 'ert_unix.tmf';
end

실행 파일을 빌드합니다.

codebuild(CodeBuildModel_top_component_folder, 'BuildMethod', templateMakefile);

공유 라이브러리 빌드

Windows에서는 내보낸 심볼을 지정하는 정의 파일을 생성하십시오.

if ispc
    exportsFile = fullfile...
        (CodeBuildModel_top_component_folder, 'CodeBuildModel.def');
    fid = fopen(exportsFile, 'w');
    fwrite(fid, ['EXPORTS' newline]);
    fwrite(fid, ['CodeBuildModel_initialize' newline]);
    fwrite(fid, ['CodeBuildModel_step' newline]);
    fwrite(fid, ['CodeBuildModel_terminate' newline]);
    fclose(fid);
end

공유 라이브러리를 빌드합니다.

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

정적 라이브러리 빌드

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

CMake 구성 파일 사용

CMakeLists.txt 파일을 사용하면 타사 툴인 CMake를 통해 원하는 컴파일러 환경에 맞는 makefile이나 작업 공간을 생성할 수 있습니다.

현재 플랫폼에 대한 CMake 명령어를 계산합니다.

if ispc
    cmakeCommand = fullfile(matlabroot, 'bin', computer('arch'), 'cmake', 'bin', 'cmake.exe');
else
    cmakeCommand = fullfile(matlabroot, 'bin', computer('arch'), 'cmake', 'bin', 'cmake');
end

CMake를 사용하여 실행 파일을 빌드합니다.

cd(CodeBuildModel_top_component_folder)
[status1, cmdout1] = system([cmakeCommand ' .']);
[status2, cmdout2] = system([cmakeCommand ' --build .']);

참고 항목

|

도움말 항목