[env]
¶Each project may have multiple configuration environments defining
the available project tasks for building, programming, debugging, unit
testing, device monitoring, library dependencies, etc. The
configuration environments are declared using [env]
sections in
“platformio.ini” (Project Configuration File).
The allowed options are listed under Options.
[env]
¶An optional configuration environment with common options that will be
shared between all [env:NAME]
environments in the platform.ini
file. It is very useful if the configuration file has a lot of
environments [env:NAME]
and they share common settings.
For example:
[env]
platform = ststm32
framework = stm32cube
board = nucleo_l152re
lib_deps = Dep1, Dep2
[env:release]
build_flags = -D RELEASE
lib_deps =
${env.lib_deps}
Dep3
[env:debug]
build_type = debug
build_flags = -D DEBUG
lib_deps = DepCustom
In this example we have two configuration environments release
and debug
. This
is equivalent to duplicating all options as shown below:
[env:release]
platform = ststm32
framework = stm32cube
board = nucleo_l152re
build_flags = -D RELEASE
lib_deps = Dep1, Dep2, Dep3
[env:debug]
platform = ststm32
framework = stm32cube
board = nucleo_l152re
build_type = debug
build_flags = -D DEBUG
lib_deps = DepCustom
[env:NAME]
¶A section with an env:
prefix defines a working environment for
pio run, pio test, pio check, pio debug and other commands.
Multiple [env:NAME]
environments with different NAME
are allowed. Every project must define at least one working environment.
Each environment must have a unique NAME
. The valid chars for NAME
are
letters a-z
, numbers 0-9
, special char _
(underscore).
For example, [env:hello_world]
.
If you have multiple working environments and you need to process only a few
of them, the commands mentioned above accept the -e, --environment
option to select a subset of the working environments to process.
The [platformio] default_envs option can be used to define a default set of working environments for the commands to process.