お仕事でArduinoのライブラリを作ることになった。
作る内容はさておき、そもそもどうやってつくるんじゃ?というところを調べておこう。
仕事の内容はネタにできないが、こういう一般的なものであればネタにできるのだよ。
いま(2016/09/26時点)のArduino IDEは、v1.6.12のようだ。
Web Editorというものもあるようだが、IDEでやる。
私はWindows10を使っているので、以下もWindows版についてとなる。
IDEでスケッチを作ると、拡張子は.inoになるが、ライブラリは普通のC++形式で作ればよいようだ。
ちなみに、IDEでcppやhを読もうとすると怒られる。
テキストエディタで作って、サンプルだけIDEで作ってビルドすることになるか。
ライブラリだからと言って.aとかにするわけではなく、ソース提供するだけになるみたいだ。
作る場所は、どこがよいか。
「How to write libraries for the Arduino?」では「hardware\libraries」に置きそうなことを書いてあるが、そういうフォルダはない。
だいたい、XPとか書いてあるので、ずいぶん前のことじゃなかろうか。。。
Program Filesに置くものでも無いので、スケッチを置くフォルダが妥当だろう。
最初から「libraries」というフォルダはあるのだが、これはライブラリをインストールしたら配置されるようだ。
ただ、これもIDEがv1.0.5となっているから、古い可能性がある。
試しておくか。
まず、librariesフォルダの中に「hiro99ma」というフォルダを作り、Arduino IDEを起動する。
うん、「スケッチ>ライブラリをインクルード」には出てこない。
では、この中に「hiro99ma.h」という空ファイルを置いて、IDEを再起動する。
出てきた。
「インクルード」だから、ヘッダファイルだけあればよいということか。
選択しても、スケッチの先頭にincludeされるだけのようだ。
では、中身がないうちに、ビルドするexamplesスケッチも用意しておこう。
Arduinoがインストールされるフォルダの中にあるlibraries(うちでは「C:\Program Files (x86)\Arduino\libraries」)には、IDEインストール時に提供されたインクルードできるライブラリが入っているようだ。
見てみると、だいたいがライブラリ名のフォルダの中に、以下が置かれていた。
- examplesフォルダ
- srcフォルダ
- keywords.txt
- library.properties
- README.adoc
srcがなく直下に置いてあるもあるし、README.adocじゃなくてreadme.mdのもあったが、まあ傾向としてはこうなっていた。
では、先ほどの「hiro99ma.h」も、srcフォルダを作って移動させて、インクルードする一覧に出てくるかやっておく。
・・・出てこない。
これはちょっと、IDEがよくないと思うが、どうだろうか。
ひとまず、srcフォルダは作らず、直下にソースファイルを置いていく。
こういう構成にした。
examplesにtest1フォルダを作り、その中にtest1.inoというビルド用スケッチを置いた。
hiro99ma.hとhiro99ma.cppは、hiro99maフォルダの中に置いている。
順番に、hiro99ma.h、hiro99ma.cpp、test1.inoの内容。
#ifndef HIRO99MA_H__
#define HIRO99MA_H__class hiro99ma {
public:
hiro99ma();
virtual ~hiro99ma() {}void hello();
};#endif /* HIRO99MA_H__ */
#include <Arduino.h>
#include "hiro99ma.h"hiro99ma::hiro99ma()
{
}void hiro99ma::hello()
{
}
#include <hiro99ma.h>
void setup() {
// put your setup code here, to run once:
hiro99ma h9m;
h9m.hello();
}void loop() {
// put your main code here, to run repeatedly:}
この内容でIDEの「検証」を行うと、エラーは発生しなかった。
試しにhiro99ma.cppを抜いてみると、ちゃんとエラーが発生したので、ビルドしているようだ。
ただ、IDEでtest1.inoを変更して保存しようとすると、書込禁止扱いになってしまった。
テキストエディタでは編集できるし、ファイルの属性も問題なさそうなので、libraries以下にあるものは書込禁止扱いにしているのかもしれない。
また、もしかしたらcppファイルはsrcフォルダに置いてもビルドしてくれるのではないか、と期待したが、ダメだった。
では、zipファイルに固めたらいけるんじゃなかろうか?
単純にzipにすると、まずライブラリとして受け入れてくれなかった。
library.propertiesファイルを置いて、適当に埋めると、インストールに成功した。
見え方は、さっきのインクルードと同じ。
ちゃんと、librariesフォルダに「hiro99ma」が展開されていた(zipインストール前に作っていたフォルダは消しておいたので、新たにインストールされたものだ)。
zipはこういう構成で、Windows標準のZIP圧縮で固めただけだ。
hiro99ma
│ library.properties
│
├─examples
│ └─test1
│ test1.ino
│
└─src
hiro99ma.cpp
hiro99ma.h
ちゃんとexamples\test1も「ファイル>スケッチの例」に入っていた。
ビルドすると、library.propertiesのcategoryを適当に書いたため警告が出たが、エラーは出なかった。
あれ、じゃあ、library.propertiesを置いておけば、zipじゃなくてlibrariesフォルダに置いておいてもsrcにCPPファイルを置いておけたんじゃないだろうか?
だめだ・・・。
インクルードできるライブラリの一覧に出てこない。
あまり納得できんが、zipでインストールしたときだけsrcフォルダが有効になると言うことと覚えておくことにする。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。