

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# FreeRTOS에서 CMake 사용
<a name="getting-started-cmake"></a>

**중요**  <a name="deprecation-message-general"></a>
이 페이지는 더 이상 사용되지 않는 Amazon-FreeRTOS 리포지토리를 참조합니다. 새 프로젝트를 생성할 때는 [여기서 시작](freertos-getting-started-modular.md)하는 것이 좋습니다. 현재 사용되지 않는 Amazon-FreeRTOS 리포지토리를 기반으로 하는 기존 FreeRTOS 프로젝트가 이미 있는 경우에는 [Amazon-FreeRTOS Github 리포지토리 마이그레이션 가이드](github-repo-migration.md) 섹션을 참조하세요.

CMake를 사용하여 FreeRTOS 애플리케이션 소스 코드에서 프로젝트 빌드 파일을 생성하고 소스 코드를 빌드 및 실행할 수 있습니다.

IDE를 사용하여 FreeRTOS 적격 디바이스에서 코드를 편집, 디버깅, 컴파일, 플래시 및 실행할 수도 있습니다. 각 보드별 시작 안내서에는 특정 플랫폼용 IDE 설정 지침이 포함되어 있습니다. IDE 없이 작업하려면 다른 타사 코드 편집 및 디버깅 도구를 사용하여 코드를 개발 및 디버깅한 다음 CMake를 사용하여 애플리케이션을 빌드하고 실행할 수 있습니다.

CMake를 지원하는 보드는 다음과 같습니다.
+ Espressif ESP32-DevKitC
+ Espressif ESP-WROVER-KIT
+ Infineon XMC4800 IoT 연결 키트
+ Marvell MW320 AWS IoT Starter 키트
+ Marvell MW322 AWS IoT Starter 키트
+ Microchip Curiosity PIC32MZEF 번들
+ Nordic nRF52840 DK 개발 키트
+ STMicroelectronicsSTM32L4 Discovery Kit IoT 노드
+ Texas Instruments CC3220SF-LAUNCHXL
+ Microsoft Windows Simulator

FreeRTOS에서 CMake를 사용하는 방법에 대한 자세한 내용은 아래 주제를 참조하세요.

**Topics**
+ [사전 조건](#building-cmake-prereqs)
+ [타사 코드 편집기 및 디버깅 도구를 사용하여 FreeRTOS 애플리케이션 개발](#developing-third-party)
+ [CMake를 사용하여 FreeRTOS 빌드](#building-cmake)

## 사전 조건
<a name="building-cmake-prereqs"></a>

계속하기 전에 호스트 시스템이 다음 사전 조건을 충족하는지 확인하십시오.
+ 디바이스의 컴파일 도구 체인이 컴퓨터의 운영 체제를 지원해야 합니다. CMake는 모든 버전의 Windows, macOS 및 Linux를 지원합니다.

  Linux용 Windows 하위 시스템(WSL)은 지원되지 않습니다. Windows 시스템에서 네이티브 CMake를 사용합니다.
+ CMake 버전 3.13 이상이 설치되어 있어야 합니다.

  [CMake.org](https://cmake.org/download/)에서 CMake의 바이너리 배포를 다운로드할 수 있습니다.
**참고**  
CMake 바이너리 배포를 다운로드하는 경우 명령줄에서 CMake를 사용하기 전에 CMake 실행 파일을 PATH 환경 변수에 추가해야 합니다.

  또한 macOS에서 [homebrew](https://brew.sh/), Windows에서 [scoop](https://scoop.sh/)이나 [chocolatey](https://chocolatey.org/)와 같은 패키지 관리자를 사용하여 CMake를 다운로드하고 설치할 수 있습니다.
**참고**  
많은 Linux 배포판에 대한 패키지 관리자에 제공되는 CMake 패키지 버전은 최신 버전이 아닙니다. 배포의 패키지 관리자에 최신 버전의 CMake가 포함되어 있지 않으면 `linuxbrew` 또는 `nix`와 같은 다른 패키지 관리자를 사용해 볼 수 있습니다.
+ 호환 가능한 네이티브 빌드 시스템이 있어야 합니다.

  CMake는 [GNU Make](https://www.gnu.org/software/make/) 또는 [Ninja](https://github.com/ninja-build/ninja/releases) 등의 많은 네이티브 빌드 시스템을 대상으로 할 수 있습니다. Make와 Ninja는 모두 Linux, macOS 및 Windows의 패키지 관리자를 사용하여 설치할 수 있습니다. Windows에서 Make를 사용하는 경우 [수식](http://www.equation.com/servlet/equation.cmd?fa=make)에서 독립 실행형 버전을 설치하거나 Make를 번들로 제공하는 [MinGW](https://sourceforge.net/projects/mingw-w64/files/)를 설치할 수 있습니다.
**참고**  
MinGW의 Make 실행 파일은 `make.exe`가 아니라 `mingw32-make.exe`입니다.

  Ninja는 Make보다 빠르며 모든 데스크톱 운영 체제에 네이티브 지원을 제공하므로 Ninja를 사용하는 것이 좋습니다.

## 타사 코드 편집기 및 디버깅 도구를 사용하여 FreeRTOS 애플리케이션 개발
<a name="developing-third-party"></a>

코드 편집기, 디버깅 확장 또는 타사 디버깅 도구를 사용하여 FreeRTOS용 애플리케이션을 개발할 수 있습니다.

예를 들어 [Visual Studio Code](https://code.visualstudio.com/)를 코드 편집기로 사용하는 경우 [Cortex-Debug](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug) VS Code 확장을 디버거로 설치할 수 있습니다. 애플리케이션 개발을 마치면 CMake 명령줄 도구를 호출하여 VS Code 내에서 프로젝트를 빌드할 수 있습니다. CMake를 사용한 FreeRTOS 애플리케이션 빌드에 대한 자세한 내용은 [CMake를 사용하여 FreeRTOS 빌드](#building-cmake) 섹션을 참조하세요.

디버깅을 위해 다음과 비슷한 디버그 구성으로 VS Code를 제공할 수 있습니다.

```
"configurations": [
    {
        "name": "Cortex Debug",
        "cwd": "${workspaceRoot}",
        "executable": "./build/st/stm32l475_discovery/aws_demos.elf",
        "request": "launch",
        "type": "cortex-debug",
        "servertype": "stutil"
    }
]
```

## CMake를 사용하여 FreeRTOS 빌드
<a name="building-cmake"></a>

CMake는 기본적으로 호스트 운영 체제를 대상 시스템으로 사용합니다. CMake를 교차 컴파일에 사용하려면 도구 체인 파일이 필요합니다. 이 파일은 사용할 컴파일러를 지정합니다. FreeRTOS에서는 기본 도구 체인 파일이 `{{freertos}}/tools/cmake/toolchains`에서 제공됩니다. 이 파일을 CMake에 제공하는 방법은 CMake 명령줄 인터페이스를 사용하는지, 아니면 GUI를 사용하는지에 따라 다릅니다. 추가 세부 정보는 아래 [빌드 파일 생성(CMake 명령줄 도구)](#cmake-gen-cli) 지침을 따르십시오. CMake의 교차 컴파일에 대한 자세한 내용은 공식 CMake wiki의 [CrossCompiling](https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling)을 참조하십시오.

**CMake 기반의 프로젝트를 빌드하려면**

1. CMake를 실행하여 Make 또는 Ninja와 같은 네이티브 빌드 시스템용 빌드 파일을 생성합니다.

   [CMake 명령줄 도구](https://cmake.org/cmake/help/latest/manual/cmake.1.html) 또는 [CMake GUI](https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html)를 사용하여 네이티브 빌드 시스템용 빌드 파일을 생성할 수 있습니다.

   FreeRTOS 빌드 파일 생성에 대한 자세한 내용은 [빌드 파일 생성(CMake 명령줄 도구)](#cmake-gen-cli) 및 [빌드 파일 생성(CMake GUI)](#cmake-gen-gui) 섹션을 참조하세요.

1. 네이티브 빌드 시스템을 호출하여 프로젝트를 실행 파일로 만듭니다.

   FreeRTOS 빌드 파일 생성에 대한 자세한 내용은 [생성된 빌드 파일에서 FreeRTOS 빌드](#cmake-build) 섹션을 참조하세요.

### 빌드 파일 생성(CMake 명령줄 도구)
<a name="cmake-gen-cli"></a>

CMake 명령줄 도구(cmake)를 사용하여 FreeRTOS 빌드 파일을 생성할 수 있습니다. 빌드 파일을 생성하려면 대상 보드, 컴파일러, 소스 코드와 빌드 디렉터리의 위치를 지정해야 합니다.

cmake에는 다음 옵션을 사용할 수 있습니다.
+ `-DVENDOR` - 대상 보드를 지정합니다.
+ `-DCOMPILER` - 컴파일러를 지정합니다.
+ `-S` - 소스 코드의 위치를 지정합니다.
+ `-B` - 생성된 빌드 파일의 위치를 지정합니다.

 

**참고**  
컴파일러는 시스템의 `PATH` 변수에 있어야 하며 그렇지 않은 경우 컴파일러의 위치를 지정해야 합니다.

예를 들어, 공급업체가 Texas Instruments이고 보드가 CC3220 Launchpad이며 컴파일러가 ARM용 GCC인 경우, 다음 명령을 실행하여 현재 디렉터리에서 `{{build-directory}}` 디렉터리로 소스 파일을 빌드할 수 있습니다.

```
cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B {{build-directory}}
```

**참고**  
Windows를 사용하는 경우 CMake가 기본적으로 Visual Studio를 사용하기 때문에 네이티브 빌드 시스템을 지정해야 합니다. 예제:  

```
cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B {{build-directory}} -G Ninja
```
또는 다음과 같습니다.  

```
cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B {{build-directory}} -G "MinGW Makefiles"
```

정규 표현식 `${VENDOR}.*` 및 `${BOARD}.*`는 일치하는 보드를 검색하는 데 사용되므로 `VENDOR` 및 `BOARD` 옵션에 대해 공급업체 및 보드의 전체 이름을 사용할 필요가 없습니다. 일치하는 항목이 하나만 있는 경우 이름의 일부만 사용해도 됩니다. 예를 들어, 다음 명령은 동일한 소스에서 동일한 빌드 파일을 생성합니다.

```
cmake -DVENDOR=ti -DCOMPILER=arm-ti -S . -B {{build-directory}}
```

```
cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -S . -B {{build-directory}}
```

```
cmake -DVENDOR=t -DBOARD=cc -DCOMPILER=arm-ti -S . -B {{build-directory}}
```

기본 디렉터리 `cmake/toolchains`에 없는 도구 체인 파일을 사용하려면 `CMAKE_TOOLCHAIN_FILE` 옵션을 사용할 수 있습니다. 예제:

```
cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -S . -B {{build-directory}}
```

도구 체인 파일이 컴파일러에 대한 절대 경로를 사용하지 않고 컴파일러를 `PATH` 환경 변수에 추가하지 않은 경우 CMake가 해당 경로를 찾을 수 없습니다. CMake가 도구 체인 파일을 찾을 수 있게 하려면 `AFR_TOOLCHAIN_PATH` 옵션을 사용합니다. 이 옵션은 `bin` 아래에서 지정된 도구 체인 디렉터리 경로와 도구 체인의 하위 폴더를 검색합니다. 예제:

```
cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -DAFR_TOOLCHAIN_PATH='/path/to/toolchain/' -S . -B {{build-directory}}
```

디버깅을 활성화하려면 `CMAKE_BUILD_TYPE`을 `debug`로 설정합니다. 이 옵션을 활성화한 경우 CMake는 디버그 플래그를 컴파일 옵션에 추가하고 디버그 기호로 FreeRTOS를 빌드합니다.

```
# Build with debug symbols
cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -DCMAKE_BUILD_TYPE=debug -S . -B {{build-directory}}
```

`CMAKE_BUILD_TYPE`을 `release`로 설정하여 컴파일 옵션에 최적화 플래그를 추가할 수도 있습니다.

### 빌드 파일 생성(CMake GUI)
<a name="cmake-gen-gui"></a>

CMake GUI를 사용하여 FreeRTOS 빌드 파일을 생성할 수 있습니다.

**CMake GUI를 사용하여 빌드 파일을 생성하려면**

1. 명령줄에서 `cmake-gui`를 실행하여 GUI를 시작합니다.

1. **Browse Source(소스 찾아보기)**를 선택하고 소스 입력을 지정한 다음 **Browse Build(빌드 찾아보기)**를 선택하고 빌드 출력을 지정합니다.  
![소스 찾기, 빌드 디렉터리 찾아보기, 검색, 항목 추가 또는 제거, 그룹화 또는 고급 옵션 보기 옵션과 함께 소스 코드 위치 및 빌드 바이너리 위치에 대한 입력 필드가 있는 CMake 창입니다.](http://docs.aws.amazon.com/ko_kr/freertos/latest/userguide/images/cmake-gui1.png)

1. **구성**을 선택하고 **Specify the build generator for this project(이 프로젝트에 대한 빌드 생성기 지정)**에서 생성된 빌드 파일을 빌드하는 데 사용할 빌드 시스템을 찾아서 선택합니다. 팝업 창이 보이지 않으면 기존 빌드 디렉터리를 재사용하는 것일 수 있습니다. 이 경우 **파일** 메뉴에서 **캐시 삭제**를 선택하여 CMake 캐시를 삭제합니다.  
![프로젝트의 생성기를 Unix Makefiles로 지정하고 교차 컴파일을 위한 도구 체인 파일을 지정하는 옵션이 포함된 CMakeSetup 대화 상자입니다.](http://docs.aws.amazon.com/ko_kr/freertos/latest/userguide/images/cmake-gui2.png)

1. **Specify toolchain file for cross-compiling(교차 컴파일을 위한 도구 체인 파일 지정)**을 선택하고 **다음**을 선택합니다.

1. 도구 체인 파일(예: `{{freertos}}/tools/cmake/toolchains/arm-ti.cmake`)을 선택하고 **완료**를 선택합니다.

   FreeRTOS의 기본 구성은 이식 가능 계층 대상을 제공하지 않는 템플릿 보드입니다. 결과적으로 Error in configuration process 메시지와 함께 창이 나타납니다.
**참고**  
다음 오류가 발생하는 경우  

   ```
   CMake Error at tools/cmake/toolchains/find_compiler.cmake:23 (message):
   Compiler not found, you can specify search path with AFR_TOOLCHAIN_PATH.
   ```

   컴파일러가 `PATH` 환경 변수에 없는 것입니다. GUI에서 `AFR_TOOLCHAIN_PATH` 변수를 설정하여 컴퓨터를 설치한 위치를 CMake에 알립니다. `AFR_TOOLCHAIN_PATH` 변수가 보이지 않으면 **Add Entry(항목 추가)**를 선택합니다. 팝업 창의 **Name(이름)**에 **AFR\_TOOLCHAIN\_PATH**를 입력합니다. **Compiler Path(컴파일러 경로)**에 컴파일의 경로를 입력합니다(예: `C:/toolchains/arm-none-eabi-gcc`).

1. GUI는 이제 다음과 같아야 합니다.  
![공급업체 보드가 선택되고, 모듈이 활성화되고, 빌드 경로가 지정된 FreeRTOS를 빌드하기 위한 CMake 구성 창입니다.](http://docs.aws.amazon.com/ko_kr/freertos/latest/userguide/images/cmake-gui3.png)

   **AFR\_BOARD**를 선택하고 보드를 선택한 다음 **구성**을 다시 선택합니다.

1. **생성**을 선택합니다. CMake는 빌드 시스템 파일(예: makefiles 또는 ninja 파일)을 생성하며, 이러한 파일은 첫 번째 단계에서 지정한 빌드 디렉터리에 나타납니다. 다음 단원의 지침에 따라 이진 이미지를 생성합니다.

### 생성된 빌드 파일에서 FreeRTOS 빌드
<a name="cmake-build"></a>

#### 네이티브 빌드 시스템을 사용하여 빌드
<a name="gsg-cmake-native"></a>

출력 바이너리 디렉터리에서 빌드 시스템 명령을 호출하여 네이티브 빌드 시스템으로 FreeRTOS를 빌드할 수 있습니다.

예를 들어, 빌드 파일 출력 디렉터리가 `<build_dir>`이고 네이티브 빌드 시스템으로 Make를 사용하는 경우 다음 명령을 실행하세요.

```
cd <build_dir>
make -j4
```

#### CMake를 사용하여 빌드
<a name="gsg-cmake-build"></a>

CMake 명령줄 도구를 사용하여 FreeRTOS를 빌드할 수도 있습니다. CMake는 네이티브 빌드 시스템을 호출하기 위한 추상 계층을 제공합니다. 예제:

```
cmake --build {{build_dir}}
```

다음은 CMake 명령줄 도구의 빌드 모드를 사용하는 몇 가지 일반적인 사례입니다.

```
# Take advantage of CPU cores.
cmake --build {{build_dir}} --parallel 8
```

```
# Build specific targets.
cmake --build {{build_dir}} --target afr_kernel
```

```
# Clean first, then build.
cmake --build {{build_dir}} --clean-first
```

CMake 빌드 모드에 대한 자세한 내용은 [CMake 설명서](https://cmake.org/cmake/help/latest/manual/cmake.1.html#build-tool-mode)를 참조하십시오.