tl;dr
- VS CodeのRaspberry Pi Pico拡張機能を使うと、ビルドツールにmakeではなくNinjaを使って、VS Codeのタスク機能tasks.jsonが組まれる
-
cmake .. -G Ninja
と、ビルドツールを指定してcmakeを行う
Arduinoではなくpico-sdkを使う場合、VS CodeのRaspberry Pi Pico拡張機能を使ってセットアップできる
Rasbperry Pi PicoにはArduino Framework以外にも、Raspberry Pi PicoのSDKであるpico-sdkを使って開発を行うことができる。公式のC/C++ドキュメントはpico-sdkを利用したガイドになっている。
pico-sdkのプロジェクトを作る方法として、公式からVS Code拡張機能であるRaspberry Pi Pico拡張機能が提供されている。
この拡張機能を使って、コマンド「Raspbery Pi Pico: New Pico Project」を使うと、UIで選択しながら、Raspberry Pi Picoのプロジェクトの初期セットアップを行うことができる。
コマンド「Task: Run Task」からビルドするタスク「Compile Project」などのが組まれている。
ただし、現状生成されたプロジェクトには.gitignoreは追加されておらず、pico-sdk本体を含むコードがリポジトリにコミットされてしまう。pico-exampleの.gitignoreにあるように、buildを取り除くと良い
build
build-*
buildディレクトリなしでコマンドを実行するとエラーになる
再度チェックアウトした状態など、buildディレクトリがない状態で、タスク「Compile Project」を実行すると、エラーが発生する。buildディレクトリがないことを告げている。
* Executing task: /home/nnyn/.pico-sdk/ninja/v1.12.1/ninja -C /home/nnyn/ghq/github.com/74th/test-raspberry-pi-pico/20240831-pico2-Lchika/build
ninja: Entering directory `/home/nnyn/ghq/github.com/74th/test-raspberry-pi-pico/20240831-pico2-Lchika/build'
ninja: fatal: chdir to '/home/nnyn/ghq/github.com/74th/test-raspberry-pi-pico/20240831-pico2-Lchika/build' - No such file or directory
* The terminal process "/home/nnyn/.pico-sdk/ninja/v1.12.1/ninja '-C', '/home/nnyn/ghq/github.com/74th/test-raspberry-pi-pico/20240831-pico2-Lchika/build'" failed to launch (exit code: 1).
よくあるように、cmakeを使って単純に以下のコマンドを使った場合でも、タスクを実行するとNinjaがない旨のエラーが出る。
# ⚠︎⚠︎ 間違った方法 ⚠︎⚠︎
mkdir build
cd build
cmake ..
* Executing task: /home/nnyn/.pico-sdk/ninja/v1.12.1/ninja -C /home/nnyn/ghq/github.com/74th/test-raspberry-pi-pico/20240831-pico2-Lchika/build
ninja: Entering directory `/home/nnyn/ghq/github.com/74th/test-raspberry-pi-pico/20240831-pico2-Lchika/build'
ninja: error: loading 'build.ninja': No such file or directory
* The terminal process "/home/nnyn/.pico-sdk/ninja/v1.12.1/ninja '-C', '/home/nnyn/ghq/github.com/74th/test-raspberry-pi-pico/20240831-pico2-Lchika/build'" failed to launch (exit code: 1).
Raspberry Pi Pico拡張機能を使って作られたプロジェクトは、ビルドツールとしてmakeではなくNinjaを使った設定がなされている。
なお、make用に作られているため、makeを実行する分にはそのまま使うことができる。
ビルドツールにNinjaを使うようにcmakeを実行する
Ninjaを使う場合、cmakeに-G Ninja
を付けて実行する。
cmake .. -G Ninja
先のコマンドでmakeを対象にbuildディレクトリを作ってしまったのであれば、一度削除する。
cd ..
rm -rf build
mkdir build
cd build
cmake .. -G Ninja
これで、タスク「Compile Project」を実行してもエラーにならずにビルドができる。