Each PlatformIO project has a configuration file named
platformio.ini in the root directory for the project. This is a
INI-style file.
platformio.ini has sections (each denoted by a [header]) and
key / value pairs within the sections. Lines beginning with ;
are ignored and may be used to provide comments.
Multiple value options can be specified in two ways:
Split values with “, “ (comma + space)
Multi-line format, where each new line starts with at least two spaces.
Here are the allowed sections and their allowed contents:
Example
For more examples, see official project examples and community projects.
[platformio]
default_envs = nodemcuv2
; Set/override default options for each "[env:***]"
[env]
build_flags =
    -D VERSION=1.2.3
    -D DEBUG=1
lib_deps_builtin =
    SPI
    Wire
lib_deps_external =
    bblanchon/ArduinoJson @ ~5.6,!=5.4
    https://github.com/gioblu/PJON.git#v2.0
    IRremoteESP8266=https://github.com/markszabo/IRremoteESP8266/archive/master.zip
[env:nodemcuv2]
platform = espressif8266
framework = arduino
board = nodemcuv2
; Build options
build_flags =
    ${env.build_flags}
    -DSSID_NAME=HELLO
    -DSSID_PASWORD=WORLD
; Library options
lib_deps =
    ${env.lib_deps_builtin}
    ${env.lib_deps_external}
    https://github.com/me-no-dev/ESPAsyncTCP.git
    knolleary/PubSubClient@^2.8
    paulstoffregen/OneWire
; Serial Monitor options
monitor_speed = 115200
monitor_flags =
    --encoding
    hexlify
; Unit Testing options
test_ignore = test_desktop
[env:bluepill_f103c8]
platform = ststm32
framework = arduino
board = bluepill_f103c8
; Library options
lib_deps = ${env.lib_deps_external}
; Debug options
debug_tool = custom
debug_server =
    ${platformio.packages_dir}/tool-jlink/JLinkGDBServer
    -singlerun
    -if
    SWD
    -select
    USB
    -port
    2331
    -device
    STM32F103C8
; Unit Testing options
test_ignore = test_desktop