.. | ||
build.sh | ||
CMakeLists.txt | ||
main.c | ||
README.md |
Using ESP-IDF in Custom CMake Projects
This example illustrates using ESP-IDF components as libraries in custom CMake projects. This builds
an equivalent application to the hello_world
example under examples/get-started/hello_world
.
Example Flow
Users looking at this example should focus on the top-level CMakeLists.txt file. This builds an
application that can run on targets without relying on the typical ESP-IDF application template. The application itself
follows a similar code flow to the aforementioned hello_world
example.
Output
Hello world!
This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 0, 4MB external flash
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...
Restarting in 6 seconds...
Restarting in 5 seconds...
Restarting in 4 seconds...
Restarting in 3 seconds...
Restarting in 2 seconds...
Restarting in 1 seconds...
Restarting in 0 seconds...
Building this Example
To build this example, run the following commands from this directory:
# Create a build directory, and change location to that directory.
mkdir build; cd build
# Invoke CMake, specifying the top-level CMakeLists.txt directory and toolchain file to use. This will generate
# the build system files.
cmake .. -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-esp32.cmake -DIDF_TARGET=esp32
# Build using the generated build system files.
cmake --build .
Or, execute build.sh
script, which contains the same commands mentioned above.
Flashing and Running this Example
To flash this example, we will have to invoke esptool.py
and idf_monitor.py
manually. While still in the build directory:
Flashing to target
# Write project binaries to flash.
esptool.py --port /dev/ttyUSB0 write_flash @flash_project_args
Running on target
# Monitor the output of the flashed firmware.
idf_monitor.py --port /dev/ttyUSB0 idf_as_lib.elf
Of course, you should replace the specified ports in the commands specified above to the proper one where your device is connected.
There is a discussion on using ESP-IDF in custom CMake projects in the programming guide under API Guides
-> Build System (CMake)
-> Using ESP-IDF in Custom CMake Projects