2018-11-11 02:36:24 -05:00
# Using ESP-IDF in Custom CMake Projects
2019-03-23 22:14:49 -04:00
This example illustrates using ESP-IDF components as libraries in custom CMake projects. The application
in this example can run on either host or on an ESP32, and the appropriate libraries are linked
to the executable depending on which target is specified. If the target is an ESP32, the libraries
created from ESP-IDF components are linked. On the other hand, stub libraries are linked if example
is meant to be run on the host to simulate the same application behavior.
The application in this example is equivalent to the `hello_world` example under `examples/get-started/hello_world` .
2018-11-11 02:36:24 -05:00
## Example Flow
Users looking at this example should focus on the [top-level CMakeLists.txt file ](./CMakeLists.txt ). This builds an
2019-03-23 22:14:49 -04:00
application that can run on the target without relying on the typical ESP-IDF application template.
2018-11-11 02:36:24 -05:00
### 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
2019-03-23 22:14:49 -04:00
To build this example, the user can either run [build-esp32.sh ](./build-esp32.sh ) to build for the ESP32
or run [build.sh ](./build.sh ) to build for the host:
2018-11-11 02:36:24 -05:00
```bash
2019-03-23 22:14:49 -04:00
# Builds the example for ESP32
./build-esp32.sh
2018-11-11 02:36:24 -05:00
```
2019-03-23 22:14:49 -04:00
or
2018-11-11 02:36:24 -05:00
2019-03-23 22:14:49 -04:00
```bash
# Builds the example to run on host
./build.sh
```
2018-11-11 02:36:24 -05:00
2019-03-23 22:14:49 -04:00
## Flashing and Running this Example
2018-11-11 02:36:24 -05:00
2019-03-23 22:14:49 -04:00
To flash and run the example, users can run either [run-esp32.sh ](./run-esp32.sh ) or [run.sh ](./run.sh ) depending
on what the example was built for. In the case of ``run-esp32.sh``, the port needs to be specified:
2018-11-11 02:36:24 -05:00
```bash
2019-03-23 22:14:49 -04:00
# Run the example on device connected to /dev/ttyUSB1
./run-esp32.sh /dev/ttyUSB1
2018-11-11 02:36:24 -05:00
```
2019-03-23 22:14:49 -04:00
or
2018-11-11 02:36:24 -05:00
```bash
2019-03-23 22:14:49 -04:00
# Run the example on the host
./run.sh
2018-11-11 02:36:24 -05:00
```
---
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`