👾

Arduino IDEとPlatformIO for VSCodeでM5Stack用ライブラリのソースツリーを共有する

2022/03/20に公開

1. 概要

自作の M5Stack 用ライブラリを書いたけど,公式に登録せずに使っている私のような人向けに,Arduino IDE でも PlatformIO for VSCode でも同じソースツリーで自作ライブラリを使ったサンプルのコンパイル・インストールできる方法を説明します。

具体例はArduino 版 ATOM Babiesにありますのでご覧ください。

2. ライブラリのツリー構造

Arduino IDE でのライブラリの一般的なツリー構造にしておきます。ここではSampleというライブラリを例にしています。library.propertiesにはname=Sampleが設定されているとします。

platformio.iniSampleフォルダ直下に置きます。

+-- Sample
    +-- examples
    |   +-- Sample1
    |   |   +-- Sample1.ino
    |   +-- Sample2
    |       +-- Sample2.ino
    +-- src
    |   +-- Lib.h
    |   +-- Lib.cpp
    +-- keywords.txt
    +-- library.properties
    +-- platformio.ini

3. 利用方法

3.1 Arduino IDE の場合

  1. Sampleソースツリーを ZIP ファイルに圧縮します。ここではSample.zipとします。
  2. Arduino IDE の「スケッチ」-「ライブラリをインクルード」-「.ZIP 形式のライブラリをインストール...」を選択し,Sample.zipファイルを指定してインストールします。
  3. 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_dirSample1にします。

Sample2のように別のライブラリが必要なサンプルをコンパイル・インストールする場合は,lib_depsに必要なライブラリを指定したenv:Sample2を用意し,[platformio]にあるsrc_dirSample2に設定します。最後に,環境をenv:Sample2に切り替えてコンパイル・インストールします。

このやり方だとSample2のような場合は二度手間になって面倒ですが,これはsrc_dirが環境の中で切り替えられない仕様になっているからです。

4.終わりに

もっと良い方法があれば教えてください。

Discussion