Library options

See also

Please make sure to read Library Dependency Finder (LDF) guide first.

lib_deps

See also

Please make sure to read Library Dependency Finder (LDF) guide first.

Type: String | Multiple: Yes

Specify project dependencies that should be installed automatically to libdeps_dir before environment processing.

If you have multiple build environments that depend on the same libraries, you can use Interpolation of Values to use common configuration.

Valid forms

; one line definition (comma + space)
[env:myenv]
lib_deps = LIBRARY_1, LIBRARY_2, LIBRARY_N

; multi-line definition
[env:myenv2]
lib_deps =
  LIBRARY_1
  LIBRARY_2
  LIBRARY_N

The each line with LIBRARY_1... LIBRARY_N will be passed automatically to pio lib install command.

Please check pio lib install for the valid declaration formats.

Example:

[env:myenv]
lib_deps =
  ; name-based (built-in library in framework)
  SPI

  ; owner-based declaration
  knolleary/PubSubClient

  ; SemVer specification
  bblanchon/ArduinoJson @ ~5.6,!=5.4

  ; external Git resource
  https://github.com/gioblu/PJON.git#v2.0

  ; custom name
  IRremoteESP8266=https://github.com/markszabo/IRremoteESP8266/archive/master.zip

lib_ignore

See also

Please make sure to read Library Dependency Finder (LDF) guide first.

Type: String | Multiple: Yes

Specify libraries which should be ignored by Library Dependency Finder.

The correct value for this option is a library name (not folder name). You will see these names in “Library Dependency Graph” when building a project between < and > symbols.

Example:

Build output

...
Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain+) COMPATIBILITY(soft)
Collected 54 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Hash> v1.0
|-- <AsyncMqttClient> v0.8.2
|   |-- <ESPAsyncTCP> v1.1.3
|-- <ESP8266WiFi> v1.0
|-- <ESP Async WebServer> v1.1.1
|   |-- <ESPAsyncTCP> v1.1.3
|   |-- <ESP8266WiFi> v1.0
|   |-- <Hash> v1.0
|   |-- <ArduinoJson> v5.13.1
|-- <ArduinoJson> v5.13.1
|-- <DNSServer> v1.1.0
|   |-- <ESP8266WiFi> v1.0
|-- <Ticker> v1.0
....

platformio.ini

[env:myenv]
; Single line
lib_ignore = AsyncMqttClient, DNSServer

; Multi-line
lib_ignore =
  AsyncMqttClient
  ESP Async WebServer

lib_extra_dirs

See also

Please make sure to read Library Dependency Finder (LDF) guide first.

Type: DirPath | Multiple: Yes

A list with extra directories/storages where Library Dependency Finder (LDF) will look for dependencies.

This option can also be set by global environment variable PLATFORMIO_LIB_EXTRA_DIRS.

Warning

This is a not direct path to a library with source code. It should be a path to storage that contains libraries grouped by folders. For example, D:\PlatformIO\extra\libraries but not D:\PlatformIO\extra\libraries\FooLibrary.

Example:

[env:myenv]
lib_extra_dirs =
    /common/libraries
    /iot/libraries

lib_ldf_mode

See also

Please make sure to read Library Dependency Finder (LDF) guide first.

Type: String | Multiple: No | Default: chain

This option specifies how does Library Dependency Finder should analyze dependencies (#include directives). See Dependency Finder Mode for details and available options.

Example:

[env:myenv]
; evaluate C/C++ Preprocessor conditional syntax
lib_ldf_mode = chain+

lib_compat_mode

See also

Please make sure to read Library Dependency Finder (LDF) guide first.

Type: String | Multiple: No | Default: soft

Library compatibility mode allows one to control strictness of Library Dependency Finder. See Compatibility Mode for details and available options..

By default, this value is set to lib_compat_mode = soft and means that LDF will check only for framework compatibility.

Example:

[env:myenv]
; Checks for the compatibility with frameworks and dev/platforms
lib_compat_mode = strict

lib_archive

Type: Bool (yes or no) | Multiple: No | Default: yes

Create an archive (*.a, static library) from the object files and link it into a firmware (program). This is default behavior of PlatformIO Build System (lib_archive = yes).

Setting lib_archive = no will instruct PlatformIO Build System to link object files directly (in-line). This could be useful if you need to override weak symbols defined in framework or other libraries.

You can disable library archiving per a custom library using libArchive field in library.json manifest.

Example:

[env:myenv]
lib_archive = no