Chapter 2. Development environment
2.3.7 Errors occurred when using idf.menucong and idf.build after updating the ESP-
IDF version from v3.3 to the latest one:
• Rebuild the environment following Get Started.
• Remove build directory build and conguration le sdkconfig under the hello_world directory.
2.3.8 How to congure PATH and IDF_PATH when developing ESP32 and ESP8266 si-
multaneously?
• For PATH, there is no need to do extra congurations. You can put them together as: export PATH=”
$HOME/esp/xtensa-esp32-elf/bin:$HOME/esp/xtensa-lx106-elf/bin:$PATH”.
• For IDF_PATH, you can specify it for separate chips as:
In ESP32 related projects, use IDF_PATH = $(HOME)/esp/esp-idf. In ESP8266 related projects,
use IDF_PATH = $(HOME)/esp/ESP8266_RTOS_SDK.
2.3.9 Do I need to use command idf.py set-target every time when switching to
another project?
When building the project with idf.py build, the target is determined as follows:
1. If the build directory build already exists, the system will use the target the project was previously
built for. It is stored in CMakeCache.txt le in the build directory.
2. Alternatively, if the build directory doesn’t exist, the system will check if the sdkconfig le
exists, and use the target specied there.
3. If both the build directory and sdkconfig le exist with dierent targets specied, the system
will report an error. This shouldn’t happen normally, unless sdkconfig was changed manually
without deleting the build directory.
4. If neither sdkconfig le nor build directory exists, it can be considered to use IDF_TARGET
to set the target as a CMake variable or environment variable. If this variable is set and is dierent
from the target specied in sdkconfig or in the build directory, the system will also report an
error.
5. Finally, if sdkconfig doesn’t exist, build directory doesn’t exist, and the target is not set
via IDF_TARGET, then the system will use the default value. The default value can be set in
sdkconfig.defaults.
6. If the target isn’t set using any of the above methods, then the system will build for ESP32 target.
To answer your question:
• idf.py set-target stores the selected target in the project’s build directory and sdkcon-
fig le, not in the terminal environment. So, once the project is congured and built once for
a certain target, if you switch to a dierent directory and build another project, then come back,
the target will not change, and will be the same as previously set for this project. And it’s not
necessary to run idf.py set-target again other than to switch to a dierent target.
• If you want to make the project built for certain target by default, add CON-
FIG_IDF_TARGET="esp32s2" to the sdkconfig.defaults le of the project.
After this, if sdkconfig le doesn’t exist and build directory doesn’t exist, idf.py build
command will build for that target specied in sdkconfig.defaults.
• idf.py set-target command can still be used to override the default target set in sdkcon-
fig.defaults.
Espressif Systems 16
Submit Document Feedback
Release master