👾
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.ini
はSample
フォルダ直下に置きます。
+-- 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 の場合
-
Sample
ソースツリーを ZIP ファイルに圧縮します。ここではSample.zip
とします。 - Arduino IDE の「スケッチ」-「ライブラリをインクルード」-「.ZIP 形式のライブラリをインストール...」を選択し,
Sample.zip
ファイルを指定してインストールします。 - 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