

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 Development kit
+ STMicroelectronicsSTM32L4 Discovery Kit IoT Node
+ 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 の全バージョンをサポートしています。

  Windows Subsystem for Linux (WSL) はサポートされていません。Windows マシンでネイティブ CMake を使用します。
+ CMake バージョン 3.13 以降がインストールされている必要があります。

  CMake のバイナリディストリビューションは [CMake.org](https://cmake.org/download/) からダウンロードできます。
**注記**  
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 を使用している場合は、[Equation](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` と呼ばれます。

  Make よりも高速で、すべてのデスクトップオペレーティングシステムにネイティブサポートを提供するため、Ninja を使用することをお勧めします。

## サードパーティーのコードエディタおよびデバッグツールによる FreeRTOS アプリケーションの開発
<a name="developing-third-party"></a>

コードエディタとデバッグ拡張機能またはサードパーティーのデバッグツールを使用して、FreeRTOS 用にアプリケーションを開発できます。

たとえば、コードエディタとして [Visual Studio](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 の「[クロスコンパイル](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、コンパイラが GCC for ARM の場合、次のコマンドを発行して、現在のディレクトリから `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/ja_jp/freertos/latest/userguide/images/cmake-gui1.png)

1. **[Configure]** (設定) を選択し、**[Specify the build generator for this project]** (このプロジェクトのビルドジェネレーターを指定) で、生成したビルドファイルを構築するために使用するビルドシステムを見つけて選択します。ポップアップウィンドウが表示されない場合は、既存のビルドディレクトリを再利用している可能性があります。この場合、**[File]** (ファイル) メニューの **[Delete Cache]** (キャッシュの削除) を選択して CMake キャッシュを削除します。  
![\[CMakeSetup ダイアログで、プロジェクトのジェネレーターを Unix Makefiles として指定し、クロスコンパイル用のツールチェーンファイルを指定するオプションが含まれています。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/cmake-gui2.png)

1. **[Specify toolchain file for cross-compiling]** (クロスコンパイル用にツールチェーンファイルを指定) を選択してから、**[Next]** (次へ) を選択します。

1. ツールチェーンファイル (`freertos/tools/cmake/toolchains/arm-ti.cmake` など) を選択し、**[Finish]** (完了) を選択します。

   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\$1TOOLCHAIN\$1PATH** と入力します。**[Compiler Path]** (コンパイラパス) にコンパイラへのパスを入力します (`C:/toolchains/arm-none-eabi-gcc` など)。

1. GUI は次のようになります。  
![\[CMake 設定ウィンドウで、ベンダーボードを選択して、モジュールを有効化し、ビルドパスを指定して FreeRTOS を構築します。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/cmake-gui3.png)

   **[AFR\$1BOARD]** を選択し、ボードを選択してから、もう一度 **[Configure]** (設定) を選択します。

1. **[Generate]** (生成) を選択します。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)」を参照してください。