具体的には、MQTT 対応ライブラリを追加してみます。
Sponsor Link
Libraries 画面では見つかるライブラリは、普通にインストール
PlatformIOのLibrariesの画面で、見つかれば、そのまま普通にインストールできるのですが、このライブラリは、見つかりませんでした。
サンプルをコンパイル
もしかしたら、動くかもしれないので、新しいプロジェクトを作って、使いたいライブラリのサンプルプロジェクトのコピーをコードして、コンパイルしてみます。
・・もちろんエラー。LeifHomieLibがないと言っているけど、これは、LeifESPBaseHomieが依存しているライブラリです。
LeifHomieLib ハ、検索画面で見つかるので、そのままインストール。
再度、コンパイルしてみると、今度は、LeifBaseHomieが依存しているAsyncMqttClientが無いとエラー。
Githubを調べて依存関係のある以下のライブラリをインストール。
- AsyncMqttClient
- ESPAsyncTCP
でも、結局 LefiESPBaseHomie は、インストールできずに残ったままです。
手でコピー
下位のライブラリは揃ったけど、使いたかった LeifESPBaseHomie のファイルは、手でコピーしてくる必要があるようです。
もともとシンプルなライブラリ(おそらく2つの関数を用意するだけ)なので、それでも良いかも。
LeifBaseHomie のヘッダファイルとコードをローカルにコピーしました。
どこにコピーするか
プロジェクトのフォルダ内に、”lib”フォルダが用意されていて、その中に”ライブラリ名”のフォルダを作成して入れておけば良いようです。
もちろん、includeパスにも入れてくれます。
結果的に、この方法でよかったようです。
ライブラリコンパイルのエラーが消せずに少しライブラリコードを変更しました。
ライブラリのフォルダ階層では、.cppから1つ上の階層に.hが見つかるはずなんだけど、どういうわけか見つからず・・・
同名のファイルがあったために、グローバルな環境に置くこともできず、とりあえずコードを修正しました。
これは、このライブラリ固有の事情だと思います。
lib_depsとの違い
Platformio.iniファイルにlib_depsを追加して、プロジェクトローカルにライブラリを追加することもできるけど、コピーされる場所は、libフォルダではなく、.pioフォルダ内になるようです。そのまま動けば問題ないけど、自分で修正する必要がある時は、libフォルダ内にコピーして、修正するほうが便利です。
まとめ
- lib フォルダに、ライブラリ名のフォルダを作成する。
- 作成したフォルダに、必要ファイルをコピーする
- include path には、手動で追加する必要なし
Sponsor Link