esp-idfのBuild Systemをついにcmakeのほうに変更した

タイトルのとおりなのだが、esp-idfのBuild Systemをついにcmakeのほうに変更した。

esp-idfというのは、ESP32というマイクロチップのsdkのことで、まえまではmakeによるビルドシステムがメインだった。 それがいつのころか忘れたがcmakeもサポートしはじめ、バージョン3.4くらい(?)からcmakeがデフォルトのビルドシステムとなるようになって、makeのほうはレガシービルドシステムという扱いにされてしまっている。

そうは知りつつもずっとmakeのほうを使いつづけてたわけだが、それには理由があって、 cmakeのほうは基本的に idf.py という、esp-idfが提供するスクリプトからいろいろ操作をするデザインになっていて、そのスクリプトを動かすための前提条件として、 export.sh というのを実行しもろもろ環境変数を設定する必要がある。

しかし、fish shellをメインで使用しているので、その export.sh を使うことができず、そのスクリプトを読解して同等の環境変数を自前で提供してやらねばならぬなぁめんどいなぁ、というのが理由で移行していなかった。

で、最近CO2センサーを買ったので、それを使うためのESP32プロジェクトを始めようと思っていたので、どうせならついでにがんばってcmakeのほうに移行してみるか、という気持ちでやってみたところ、拍子抜けするくらいアッサリ移行できてしまった。

どういうことかというと、bassというのを使うと、fish shellからbashスクリプトを使ったり読み込んだりできるのだ。これを使って、

bass source $IDF_PATH/export.sh

とやるだけでよかったのだった。

移行してみた結果:

  • ビルド時間めっちゃ短縮された
  • compile_commands.jsonが自動で生成される

などのメリットがあって、もっと早くやっておけばよかった、感。

compile_commands.json というのはclangdとかcclsとかのlsp-serverの動作のために必要な定義ファイルで、makeのときはbearとかを使って自分でがんばって生成していた…。あの苦労はいったい。

そんなわけで、最近はCO2センサーで遊んでいる。

Home environment checker by ESP32 + DHT11 + CCS811

これについてはまた追って書こうと思う。