arduino-cli自作クラスの他スケッチでの再利用(ライブラリ化?)
前提
arduino-cliをvscodeで利用している。下記ページ参照。 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を利用できるはず。