👾

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

に公開

1. 概要

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

具体例はhttps://github.com/3110/arduino-platformio-compatible-projectにありますのでご覧ください。

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
    +-- library.json
    +-- 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 IDEの場合

platformio.iniを以下のように設定します(変更が必要な部分だけ記載しています)。

[platformio]
; PlatformIO IDEのProject Environment Switcherは「Default」にしておき,
; 環境の切り替えは以下のdefault_envsで行うこと。
; default_envs には 1 つの環境のみ指定可能(カンマ区切りは使わないこと)

default_envs = Sample1
; default_envs = Sample2

src_dir = examples/${platformio.default_envs}

[env]
platform = espressif32@^6.11.0
platform_packages = 
	platformio/framework-arduinoespressif32@^3.20017
	platformio/tool-esptoolpy@^2.40900.0
framework = arduino

board = m5stack-core-esp32

lib_extra_dirs = ../../src
lib_ldf_mode = deep

build_flags = 
lib_deps = 
	m5stack/M5Unified@^0.2.7
	m5stack/M5GFX@^0.2.9

[build-target]
; extends = release
extends = debug

[release]
build_type = release
build_flags =
	${env.build_flags}
lib_deps =
	${env.lib_deps}

[debug]
build_type = debug
build_flags =
	${env.build_flags}
	-DCORE_DEBUG_LEVEL=4
	-DDEBUG
lib_deps =
	${env.lib_deps}

[env:Sample1]
extends = build-target

[env:Sample2]
extends = build-target
lib_deps = 
	${build-target.lib_deps}
	Arduino_JSON

4.終わりに

src_dirの切り替えにdefault_envsを使う方法(src_dir=${platformio.defaults_envs}とし,examples以下のフォルダと同じ名前の環境を定義しておく)はhttps://github.com/Xinyuan-LilyGO/T-Display-S3-AMOLED-1.43-1.75/platformio.iniを参考にしました。

Discussion