本文是关于如何将自己写的Arduino库整理、发布成Arduino IDE的库管理器能管理、能提供给所有用户下载、升级的库。
如何将自己写的程序做成库,即一对.h、.cpp文件,网上已经有很多资料了。
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification
新的库格式是为了从1.6.2版的IDE开始所支持的自动的库管理器而设计的。用库管理器可以自动下载、更新互联网上的库。
1.5格式的最新版本是2.1版。
源代码位于src
目录下,如:
Servo/src/Servo.h
Servo/src/Servo.cpp
示例代码必须位于examples
目录下。
文档可以放在extras
目录下。
在库的根目录放library.properties
文件。这个文件里的数据让库管理器可以自动搜索、安装这个库。
这个文件中的数据都是key=value
的格式,内容都是UTF-8编码的。可用的字段有:
name:库的名字,只能用字母、数字、空格、下划线、小数点和减号,不能以数字开头,前后不能有空格。
version:版本号,必须是semver格式的版本号,如1.2.0或1.2。
author:作者的姓名和电邮
maintainer:维护者的姓名和电邮
sentence:一句描述库的作用的话。
paragraph:一段描述库的作用的话。
category:分类。请归于下列分类之一:
url:库的托管网址,如github的项目网址。
architectures:逗号分隔地列出库所支持的硬件平台,*
表示支持所有平台。
dot_a_linkage:值为true
表示支持编译为.a文件。
includes:逗号分隔地列出要用户程序加的#include
文件。如果没有这个变量,则src/
下所有的.h
文件都会被#include
。
precompiled:目前还没有启用。如果是true
,就会使用src/{build.mcu}
里的.a
或.so
文件。这里的{build.mcu}
是预先编译的库文件的硬件平台,比如cortex-m3
。
ldflags:目前还没有启用。表示链接的选项,如ldflags=-lm
。
在库根目录下的keywords.txt
文件,用来给出这个库所产生的需要语法高亮的关键字。
这个文件的格式是每行为一个<名字> <关键字类型>
的对,#
开头的行是注释。
关键字类型有:
如:
xxxxxxxxxx
#######################################
# Syntax Coloring Map For Button
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
Button KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
isPressed KEYWORD2
#######################################
# Constants (LITERAL1)
#######################################
https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ
要发布的库最好按照1.5版库格式编写,一定要有library.properties
文件。
一旦你的库已经被发布在库管理器了,如果你有了更新,就需要修改library.properties
文件中的version
,然后再打一个tag。库管理器的索引每个小时会检查一次,因此会发现你的升级并发布的。