Chapter 2. Development environment
2.3.7 Errors occurred when using idf.menuconfig and idf.build after updating the ESP-
IDF version from v3.3 to the latest one:
• Rebuild the environment following
• Remove build directory build and configuration file sdkconfig under the hello_world directory.
2.3.8 How to configure PATH and IDF_PATH when developing ESP32 and ESP8266 si-
multaneously?
• For PATH, there is no need to do extra configurations. 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 file in the build directory.
2. Alternatively, if the build directory doesn't exist, the system will check if the sdkconfig file
exists, and use the target specified there.
3. If both the build directory and sdkconfig file exist with different targets specified, 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 file 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 different
from the target specified 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 file, not in the terminal environment. So, once the project is configured and built once for
a certain target, if you switch to a different 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 different target.
• If you want to make the project built for certain target by default, add CON-
FIG_IDF_TARGET="esp32s2" to the sdkconfig.defaults file of the project.
After this, if sdkconfig file doesn't exist and build directory doesn't exist, idf.py build
command will build for that target specified in sdkconfig.defaults.
• idf.py set-target command can still be used to override the default target set in sdkcon-
fig.defaults.
Espressif Systems
Get
Started.
16
Submit Document Feedback
Release master
Need help?
Do you have a question about the ESP and is the answer not in the manual?