arduino-cli自作クラスの他スケッチでの再利用(ライブラリ化?)

前提

arduino-clivscodeで利用している。下記ページ参照。 aka1022.hatenablog.com

ファイル構成は以下の前提

/myWorkSpace
    /.vscode
        arduino.json
        c_cpp_properties.json
    /ArduinoOutput
    /mySketch1
        mySketch1.ino
        myClass.cpp
        myClass.h
    /mySketch2
        mySketch2.ino

arduino.jsonのsketchにmySketch1\mySketch1.inoが設定され、そのスケッチ内でmyClassをコーディングした。 新しく、mySketch2を作成し、そこでもmyClassを使いたくなった。単純にヘッダファイルをインクルードするだけではリンクされないのでmyClassのソースとヘッダをライブラリとして認識させる必要がある。

下準備

ユーザーディレクトリを確認

arduino-cli config dump

のdirectoriesのuserがユーザーディレクトリとなる。このディレクトリのlibrariesディレクトリにクラスのソースファイルとヘッダファイルを置くとそれがライブラリとして認識される。今のファイル構成ではユーザーディレクトとしては/myWorkSpaceを充てる必要がある。 一致していない場合、

arduino-cli config set directories.user [myWorkSpaceのパス]

を実行する。

コーディング

順番が前後してしまったが、クラスのソースファイルとヘッダファイルについて。
1. ソースの拡張子は.cpp
2. ソースでArduino.hをインクルードする。
をしておけば、通常のcppの記法でソース、ヘッダを記述できる。 利用する側はmyClass.hをインクルードすればいい。 明示的には、

#include <myClass.h> 

すればOK。(次項目で移動するが、../libraries/myClass/myClass.hとしなくてもいい。)

ファイル構成

myWorkSpace直下にlibrariesフォルダを作成し、その直下にヘッダファイル名と同じmyClassフォルダを作成し、その直下にヘッダファイルとソースファイルを移動する。 明示すると、

/myWorkSpace
    ...
    /libraries
        /myClass
            myClass.cpp
            myClass.h
    /mySketch1
        mySketch1.ino
        myClass.cpp
        myClass.h
    ...

となる。git を利用している人はgit mvコマンドで移動させるのがよい。

まとめ

以上の手順で、新しいスケッチmySketch2でもmyClassを利用できるはず。