본문 바로가기

아두이노

[번역]library.properties 파일 포맷

출처: https://arduino.github.io/arduino-cli/0.28/library-specification/#15-library-format-rev-22

 

Library specification - Arduino CLI

Library specification This is the specification for the Arduino library format, to be used with Arduino IDE 1.5.x onwards. rev.1 has been implemented starting with Arduino IDE version 1.5.3 (now superseded by rev.2) rev.2 will be implemented starting from

arduino.github.io

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

 

  1. 라이브러리 매니저에서 보여질 설명문인 듯 [본문으로]
  2. 라이브러리 매니저에서 sentence에 이어 보여질 설명문인 듯 [본문으로]
  3. "라이브러리 포함하기"를 통해 헤더파일 이름은 동일하지만 전혀 다른 라이브러리들을 스케치에 포함시키는 상황을 의미하는 듯 [본문으로]