esp-idf/examples/build_system/cmake/linux_host_app
Djordje Nedic facab8c5a7 tools: Increase the minimal supported CMake version to 3.16
This updates the minimal supported version of CMake to 3.16, which in turn enables us to use more CMake features and have a cleaner build system.
This is the version that provides most new features and also the one we use in our latest docker image for CI.
2022-06-01 06:35:02 +00:00
..
main
CMakeLists.txt tools: Increase the minimal supported CMake version to 3.16 2022-06-01 06:35:02 +00:00
README.md
sdkconfig.defaults

README.md

Supported Targets Linux

This hello-world example builds a simple hello-world application for Linux. The compiler used is the Linux-gcc.

There are two major differences to an IDF application built for an ESP chip compared to an application build for Linux:

  1. The entry-point on Linux is int main(int argc, char **argv), instead of void app_main(void) on an ESP chip. In this example for Linux, the void app_main(void) function is still included to make the connection to the IDF entry point clearer. However, it is simply called by int main(int argc, char **argv). Refer to the source file linux_host_app.cpp to see how it is used.

  2. The project-level CMakeLists.txt for Linux is different from that of a normal IDF application for an ESP chip. On Linux, there is an additional line set(COMPONENTS main), which clears the common requirements (default dependencies usually included in all IDF applications). This is currently necessary as the Linux-host feature is still under development. Otherwise, a lot of hardware-dependent code would be pulled in.

Requirements

Currently, Ruby is required for the mock override of FreeRTOS.

Build

Source the IDF environment as usual, then set the Linux target:

idf.py --preview set-target linux

sdkconfig.defaults sets the Linux target by default, so this not strictly necessary.

Once this is done, build the application:

idf.py build

Since this application runs on host, the flashing step is unnecessary.

Run

`build/linux_host_app.elf`