VSCodeでESP-IDF拡張機能を使っていたときに、bashから idf.py を起動しようとすると「idf.pyが見つからない」と言われることがあったので、その時のメモです。
結論から言うと「VSCode拡張機能」では以下のように設定がされているが、コマンドラインから使用するときは自分でPATHを設定する必要があるようです。
では、Ubuntuの .bashrc になんて書けばいいのでしょうか?
直観的には .bashrc などに「IDF_PATH」を設定してあげて、そのパスの「export.sh」を呼び出して、諸々の設定をしてもらえばいいと思うのだが、単純に設定しただけでは駄目でした。
色々とググった結果、以下のようにしました。
(ESP-IDF は $HOME/esp/v5.4.1/esp-idf に入っている前提)
# esp-idf
export IDF_PATH="$HOME/esp/v5.4.1/esp-idf"
export IDF_PATH_FORCE=1
source $IDF_PATH/export.sh
「export IDF_PATH_FORCE=1」は、すでに IDF_PATH が設定されている環境でも、強制的にそのパスを使いたいときに使います。
ESP-IDF の export.sh は、デフォルトで「既に IDF_PATH が設定されている場合は、再設定しない」ようになっています。
これは複数バージョンの ESP-IDF を切り替えて使うときに便利ですが、逆に 古い設定が残っていると上書きされず、想定外のバージョンが使われてしまうことがあります。
IDF_PATH_FORCE=1 をセットすることで、意図したパスを確実に使えるようになります。
もし、複数ESP-IDF環境を持っていた場合
# v4.4.6, v5.4.1 の2つを持っていたとした例
$HOME/esp/
├── v4.4.6/
│ └── esp-idf/
├── v5.4.1/
│ └── esp-idf/
.bashrc に以下を追記して、
# ESP-IDF バージョン切り替え関数
idf_use() {
local ver=$1
export IDF_PATH="$HOME/esp/$ver/esp-idf"
export IDF_PATH_FORCE=1
source "$IDF_PATH/export.sh"
echo "Switched to ESP-IDF $ver"
}
bash から以下のように呼び出すと、IDFのバージョンを切り替えて使用できます。
idf_use v5.4.1 # 5.4.1 に切り替え
idf_use v4.4.6 # 4.4.6 に切り替え
とりあえず、備忘録。