출처: https://arduino.github.io/arduino-cli/0.28/library-specification/#15-library-format-rev-22
library.properties 파일은 key=value 값을 명시한 속성 목록으로 UTF-8로 인코딩 된다. 아래에서 특별한 언급이 없는 한, 명시된 모든 속성필드를 작성하는 것이 좋다.
- name - 라이브러리 이름. 알파벳(A-Z, a-z), 숫자(0-9), 공백, 아랫줄(_), 점(.), 대쉬(-)만 포함. 숫자나 문자로만 시작. 최소 하나의 문자는 포함해야 함. Arduino로 시작하는 name 값은 라이브러리 매니저의 색인에 더이상 추가되지 않음. Arduino로 시작하는 라이브러리 명은 공식 라이브러리용으로 예약되어 사용불가.
- version - 라이브러리 버전. semver(Semantic Versioning)를 준수함. 예시: 1.2.0 적합; 1.2 허용; r5, 003, 1.1c 부적합.
- author - 저자의 이름/별명. 이메일 주소는 필수사항이 아니며 작성할 경우 콤마로 구분.
- maintainer - 라이브러리 관리자의 이름과 이메일 주소.
- sentence - 라이브러리에 대한 한 문장 설명. 1
- paragraph - sentence보다 긴 한 문장 설명. sentence에 이어서 설명할 두 번째 문장. 2
- category(기본값: Uncategorized) - 허용값: Display, Communication, Signal Input/Output, Sensors, Device Control, Timing, Data Storage, Data Processing, Other.
- url - GitHub 페이지 같은 라이브러리 프로젝트 URL. 라이브러리 매니저에서 "More info"에 링크됨.
- architectures(기본값: *) - 라이브러리가 지원하는 아키텍처 목록. 콤마로 구분. 특정 아키텍처에 의존적인 코드를 포함하지 않고 모든 아키텍처를 지원할 경우 *를 사용. 여러 라이브러리가 #include문과 매칭될 때 우선순위를 결정하는 요소로 사용됨. 이 목록과 일치하지 않는 아키텍처를 대상으로 컴파일 될 때 경고 메시지를 제공하는 데 사용됨. 3
- depends(옵션사항, Arduino IDE 1.8.10/Arduino CLI 0.7.0부터 적용) - 의존관계(이 라이브러리를 빌드할 때 필요한 다른 라이브러리들) 목록. 콤마로 구분. 라이브러리 매니저를 통해 해당 라이브러리를 설치할 경우, 의존관계에 있는 다른 라이브러리들도 함께 설치됨. arduino-cli lib install 명령도 의존관계에 있는 다른 라이브러리들을 함께 설치함. 라이브러리 name에 콤마는 허용되지 않으므로, 공백을 포함하는 라이브러리 이름을 명시함. 예시: depends=Very long library name, Another library with long-name; 버전조건은 의존관계에 있는 라이브러리 이름 뒤에 괄호를 써서 명시함: depends=ArduinoHttpClient (>=1.0.0)
- dot_a_linkage(옵션사항, Arduino IDE 1.6.0/arduino-builder 1.0.0-beta13부터 적용) - true로 설정하면 .a(archive) 파일을 써서 라이브러리를 컴파일 함. 우선 평소처럼 모든 소스 파일을 .o 파일로 컴파일함. 그 다음, 모든 .o 파일을 링크시키는 대신 하나의 .a 파일로 저장하여 링커 명령에 포함시킴. 요구되는 라이브러리 폴더 구조를 따라야 함.
- includes(옵션사항, Arduino IDE 1.6.10부터 적용) - 스케치에 포함시킬 헤더파일 목록. 콤마로 구분. 이 속성은 "라이브러리 포함하기" 명령으로 사용됨. 만약 이 속성을 생략하면, 소스 폴더에 있는 모든 헤더파일이 스케치에 포함됨.
- precompiled(옵션사항, Arduino IDE 1.8.6/arduino-builder 1.4.0부터 적용) - .a(archive), .so(shared object) 파일을 지원하도록 함. 라이브러리 내에 이 파일들의 위치는 "Precompiled binaries"를 참조할 것. 정적 라이브러리는 ldflag를 사용.
- true - 소스 파일을 항상 컴파일함. 오픈소스 코드와 미리 컴파일된 바이너리를 혼합해서 빌드할 때 유용함. 이 옵션은 Arduino IDE 1.8.12/arduino-builder 1.5.2/Arduino CLI 0.8.0에서 실수로 사라졌다가, Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0에서 다시 복구됨.
- full(Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0부터 적용) - 타겟 보드에 대한 미리 컴파일된 라이브러리를 제공할 경우 소스 파일은 컴파일 안함. 미리 컴파일된 라이브러리가 제공되지 않는다면, 소스 파일을 컴파일 함. 이 옵션은 특정 타겟 보드에 대한 미리 컴파일된 라이브러리를 제공함으로써 컴파일 시간을 줄임. 미리 컴파일된 라이브러리의 타겟이 아닌 임의의 보드에 대해서는 라이브러리를 컴파일 할 수 있도록 함.
- ldflags(옵션사항, Arduino IDE 1.8.6/arduino-builder 1.4.0부터 적용) - 링커 플래그를 추가함. 예시: ldflags=-lm
예시:
name=WebServer
version=1.0.0
author=Cristian Maglie <c.maglie@example.com>, Pippo Pluto <pippo@example.com>
maintainer=Cristian Maglie <c.maglie@example.com>
sentence=A library that makes coding a Webserver a breeze.
paragraph=Supports HTTP1.1 and you can do GET and POST.
category=Communication
url=http://example.com/
architectures=avr
includes=WebServer.h
depends=ArduinoHttpClient