[IoT] PlatformIOで検索しても出てこないライブラリを追加する方法

VisualStudio + PlatformIO は便利なのですが、使いたいライブラリが出てこない時があります。手動で追加する方法を説明します。

具体的には、MQTT 対応ライブラリを追加してみます。

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フォルダ内にコピーして、修正するほうが便利です。

まとめ

platformIO にライブラリを追加する
  • lib フォルダに、ライブラリ名のフォルダを作成する。
  • 作成したフォルダに、必要ファイルをコピーする
  • include path には、手動で追加する必要なし

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です