

Cmake include code#
“components” are modular pieces of standalone code that are compiled into static libraries (.a files) and linked to an app. A single project will usually build two apps - a “project app” (the main executable, ie your custom firmware) and a “bootloader app” (the initial bootloader program which launches the project app). A single project contains exactly one project configuration.Īn “app” is an executable that is built by ESP-IDF. This configuration file is modified via idf.py menuconfig to customize the configuration of the project. “Project configuration” is held in a single file called sdkconfig in the root directory of the project. Concepts Ī “project” is a directory that contains all the files and configuration to build a single “app” (executable), as well as additional supporting elements such as a partition table, data/filesystem partitions, and a bootloader. After the components in the project are configured, the build system will compile the project. It then allows the user to configure the ESP-IDF project using a text-based menu system to customize each component. To do that, when a project is compiled, the build system will look up all the components in the ESP-IDF directories, the project directories and (optionally) in additional custom component directories. The ESP-IDF base libraries (libc, ROM bindings, etc)ĮSP-IDF makes these components explicit and configurable. For example, for a web server that shows the current humidity, there could be: Overview Īn ESP-IDF project can be seen as an amalgamation of a number of components.
Cmake include how to#
Read this document if you want to know how to organize and build a new ESP-IDF project or component. This document explains the implementation of the ESP-IDF build system and the concept of “components”. Using Prebuilt Libraries with Components.Using ESP-IDF Components from External Libraries.Using Third-Party CMake Projects with Components.Fully Overriding the Component Build Process.Wrappers to Redefine or Extend Existing Functions.Requirements in the Build System Implementation.Overriding Default Build Specifications.
