👾
Arduino IDEとPlatformIO for VSCodeでM5Stack用ライブラリのソースツリーを共有する
1. 概要
自作の M5Stack 用ライブラリを書いたけど,公式に登録せずに使っている私のような人向けに,Arduino IDE でも PlatformIO for VSCode でも同じソースツリーで自作ライブラリを使ったサンプルのコンパイル・インストールできる方法を説明します。
具体例はArduino 版 ATOM Babiesにありますのでご覧ください。
2. ライブラリのツリー構造
Arduino IDE でのライブラリの一般的なツリー構造にしておきます。ここではSample
というライブラリを例にしています。library.properties
にはname=Sample
が設定されているとします。
platformio.ini
はSample
フォルダ直下に置きます。
+-- Sample
+-- examples
| +-- Sample1
| | +-- Sample1.ino
| +-- Sample2
| +-- Sample2.ino
+-- src
| +-- Lib.h
| +-- Lib.cpp
+-- keywords.txt
+-- library.properties
+-- platformio.ini
3. 利用方法
3.1 Arduino IDE の場合
-
Sample
ソースツリーを ZIP ファイルに圧縮します。ここではSample.zip
とします。 - Arduino IDE の「スケッチ」-「ライブラリをインクルード」-「.ZIP 形式のライブラリをインストール...」を選択し,
Sample.zip
ファイルを指定してインストールします。 - Arduino IDE の「ファイル」-「スケッチ例」にある「Sample」メニューから「Sample1」もしくは「Sample2」を選択してコンパイル・インストールします。
3.2 PlatformIO for VSCode の場合
platformio.ini
を以下のように設定します(変更が必要な部分だけ記載しています)。
[platformio]
; コンパイルするサンプルを指すように書き替える。
; src_dirはここでしか指定できない。
src_dir = examples/Sample1
; src_dir = examples/Sample2
default_envs = examples
[env]
lib_ldf_mode = deep
lib_extra_dirs = ../../src
[release]
build_type = release
[debug]
build_type = debug
build_flags =
-DDEBUG
; サンプル共通の設定
[examples]
lib_deps =
M5Stack
; サンプル共通の環境
[env:examples]
extends = examples, release
[env:examples-debug]
extends = examples, debug
; 別のライブラリが必要なサンプルの設定
[Sample2]
extends = examples
lib_deps =
${examples.lib_deps}
Arduino_JSON
; 別のライブラリが必要なサンプルの環境
[env:Sample2]
extends = Sample2, release
[env:Sample2-debug]
extends = Sample2, debug
Sample1
をコンパイル・インストールする場合は[platformio]
にあるsrc_dir
をSample1
にします。
Sample2
のように別のライブラリが必要なサンプルをコンパイル・インストールする場合は,lib_deps
に必要なライブラリを指定したenv:Sample2
を用意し,[platformio]
にあるsrc_dir
をSample2
に設定します。最後に,環境をenv:Sample2
に切り替えてコンパイル・インストールします。
このやり方だとSample2
のような場合は二度手間になって面倒ですが,これはsrc_dir
が環境の中で切り替えられない仕様になっているからです。
4.終わりに
もっと良い方法があれば教えてください。
Discussion