Preview release: CMake-based build system for ESP-IDF
Posted: Mon Apr 30, 2018 2:44 am
Since the beginning of ESP-IDF we've had a build system based on GNU Make. It's been effective and reliable for most users.
However, there have been two long term shortcomings:
The new CMake-based build system is now available as a preview pre-release. Not all build system features are fully supported, and we expect some bugs. Please report bugs via Github or here on the forums (please specify that you are using CMake when reporting bugs). We appreciate your patience while we iron things out.
If there's functionality that you can currently implement in the GNU Make based system which seems to be complex or impossible in the CMake-based system, please also let us know the details and we'll work through this support with you.
We're calling the new build system "CMake-based" because you don't need to run cmake directly if you don't want to. For command line users, a new Python-based tool called "idf.py" provides a wrapper around all other tools. "idf.py menuconfig" and "idf.py build flash monitor" is everything that you need to run.
Getting Started
Documentation is here:
https://docs.espressif.com/projects/esp ... index.html
(At the above link, follow the Getting Started guide for your platform to configure the CMake-based build system. There is also a reference page with details of the new build system.)
The preview branch can be found here:
https://github.com/espressif/esp-idf/tree/feature/cmake
EDIT: Since 2018-09-08 and commit 4eeed31, experimental CMake support is available in the master branch of ESP-IDF.)
The preview IDF master branch contains both the original GNU Make-based build system and the CMake-based build system, side by side.
Windows users: note the new setup instructions and ESP-IDF Tools Installer. MSYS2 is no longer required to use CMake. 64-bit Windows is required, please let us know if this is a showstopper for you.
The Future
The CMake preview branch (feature/cmake) will be updated regularly to track the master branch. We don't plan to merge CMake support into the master branch until after the v3.1 release candidate.
Experimental CMake support is available in the ESP-IDF V3.1 release and the master branch of ESP-IDF (for V3.2 and beyond).
CMake-based build system will be the default build system in ESP-IDF V4.0.
The existing GNU Make build system will not be going away soon. It will continue to be supported for all ESP-IDF v3.x releases. Depending on how the CMake Preview progresses, we may look into exclusively supporting the CMake-based system for ESP-IDF v4.0 v5.0 or in a later version.
Still to come
The following features from the GNU Make based build system are still pending. They will be added to the CMake-based build system branch over the coming weeks:
However, there have been two long term shortcomings:
- Windows users must use the Unix-like MSYS2 environment, which provides full functionality but is un-Windows-like and can be slow.
- Complex GNU Make build systems are difficult to integrate into IDEs. We support Eclipse, but people often have trouble getting their ESP-IDF Eclipse projects to work reliably. Third-party IDE support is also a mixed bag.
The new CMake-based build system is now available as a preview pre-release. Not all build system features are fully supported, and we expect some bugs. Please report bugs via Github or here on the forums (please specify that you are using CMake when reporting bugs). We appreciate your patience while we iron things out.
If there's functionality that you can currently implement in the GNU Make based system which seems to be complex or impossible in the CMake-based system, please also let us know the details and we'll work through this support with you.
We're calling the new build system "CMake-based" because you don't need to run cmake directly if you don't want to. For command line users, a new Python-based tool called "idf.py" provides a wrapper around all other tools. "idf.py menuconfig" and "idf.py build flash monitor" is everything that you need to run.
Getting Started
Documentation is here:
https://docs.espressif.com/projects/esp ... index.html
(At the above link, follow the Getting Started guide for your platform to configure the CMake-based build system. There is also a reference page with details of the new build system.)
The preview branch can be found here:
https://github.com/espressif/esp-idf/tree/feature/cmake
EDIT: Since 2018-09-08 and commit 4eeed31, experimental CMake support is available in the master branch of ESP-IDF.)
The preview IDF master branch contains both the original GNU Make-based build system and the CMake-based build system, side by side.
Windows users: note the new setup instructions and ESP-IDF Tools Installer. MSYS2 is no longer required to use CMake. 64-bit Windows is required, please let us know if this is a showstopper for you.
The Future
The CMake preview branch (feature/cmake) will be updated regularly to track the master branch. We don't plan to merge CMake support into the master branch until after the v3.1 release candidate.
Experimental CMake support is available in the ESP-IDF V3.1 release and the master branch of ESP-IDF (for V3.2 and beyond).
CMake-based build system will be the default build system in ESP-IDF V4.0.
The existing GNU Make build system will not be going away soon. It will continue to be supported for all ESP-IDF v3.x releases. Depending on how the CMake Preview progresses, we may look into exclusively supporting the CMake-based system for ESP-IDF v4.0 v5.0 or in a later version.
Still to come
The following features from the GNU Make based build system are still pending. They will be added to the CMake-based build system branch over the coming weeks:
- IDE setup instructions (generic cmake instructions may work for many IDEs, but there will probably be some rough edges)
- Support for Secure Boot & Flash Encryption
- Support for the ULP processor toolchain
- Chinese translations for the CMake-based Getting Started documentation (currently English only)