基本的にはZMKの開発はWSLのemacsでやるつもりではありますが、ドキュメントにVSCodeを使った環境の構築の方法が出ているので、やってみようと思っています。 emacsって、windowsでも使えることは使えるのですが、肝心の外部コマンドとの連携とかが壊滅的でちっとも実力が出せないのです。そもそもemaacsも長く使っているわりには、たいして自分でカスタムしていたわけでもなく、人のモジュールを便利に組合せているだけのライトユーザだったし。 VSCodeの方は、emacsキーバインディングにしてしまえば、使い勝手はいいし、拡張機能も豊富だし、その機能もコマンドパレットからちゃちゃっと呼び出せるし、emacsの代わりとしてかなり有望だと思っていて、実際業務でのエディタはVSCodeに移行しちゃってたりする。
■ まずはこのコマンドを打つ
west config build.cmake-args -- -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
とあるけど、どこで打つのだろう。 とりあえず zmkディレクトリで打ってみる。
何も起きず。
注意書きを読むと、これは、westコマンドのデフォルトのオプションを設定するためのコマンドのようです。ビルドのときのパラメータを設定している人は、上書きされちゃうからそれも一緒に指定するようにと書いてある。 コンフィグのディレクトリの設定はビルド時のオプションで指定しているから、とりあえず、ここではそのまま進めることにする。 もし、ビルド時にどちらかが上書きされちゃうようであれば対応する。
■ VSCodeの拡張機能の設定 VSCodeにC/C++拡張機能を入れるようにとの指定。
入れたら、workspaceを開いて(zmkとzmk-configのあるディレクトリを含むところ)コンフィグを呼び出す。
コンパイラのパスは、
source zephyr/zephyr-env.sh
echo ${ZEPHYR_SDK_INSTALL_DIR}/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
で取得とあるけど、 ZEPHYR_SDK_INSTALL_DIR が空。
zephyr/zephyr-env.sh の中を見てみると、そんな変数設定してない。
こりゃあ、ドキュメントが古いかなぁ。
zephyrのドキュメントを見ると、ZEPHYR_SDK_INSTALL_DIRにはzephyr-sdk-0.10.1こんな感じのsdkのディレクトリが入るみたい. 自分の環境だと、$HOME/.local/zephyr-sdk-0.13.2 だった。
前に気になっていた、~/.zephyrrcが無い件が関係しているような決もするので、そこに
export ZEPHYR_SDK_INSTALL_DIR=${HOME}/.local/zephyr-sdk-0.13.2
を入れてみた。 そうすると、コンパイロのパスは
$HOME/.local/zephyr-sdk-0.13.2/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
ということで正しいパスになる。
IntelliSense mode は gcc-arm にするとあるが、選択肢にlegacyと書いてあって、他に linux-gcc-arm というのがあったので、それを選択。
Advanced Settings > Compiler commands に ${workspaceFolder}/app/build/compile_commands.json を設定するとあるけど、これ、無い。buildディレクトリということから、予想できたけど、
- ./app/build/right/compile_commands.json
- ./app/build/left/compile_commands.json この2つがある。 とりあえず、片方指定しておくことにする。
とりあえず。 以上。
使ってみて問題あったらまた修正だね。