import CMake, CMake and C++20 Modules - Bill Hoffman - CppCon 2022

Learn how CMake is evolving to support C++20 modules, improving build and installation of projects, and enhancing configurability with its testing and installer systems.

Key takeaways
  • CMake’s goal is to give compile-time portability, and it has been successful in achieving this.
  • CMake has been used in many projects, including ITK, a C++ library.
  • CMake is now working on supporting C++20 modules, which will allow for easier build and installation of projects.
  • CMake’s experimental CXX module API allows for the creation of C++ modules, which can be used to create libraries and executables.
  • The CXX module API uses a JSON file to store the module’s metadata and dependencies.
  • CMake has improved its file-based API to support C++ modules, including the ability to install and uninstall modules.
  • CMake has also improved its support for system include directories and has added support for Ninja, a build system.
  • CMake’s C++ module support is still experimental, but it is expected to be fully supported in the future.
  • CMake’s build system is designed to be highly configurable and can be used to build a wide range of projects.
  • CMake’s installer is also highly configurable and can be used to create installers for a wide range of platforms.
  • CMake’s testing system, ctest, is also highly configurable and can be used to run tests on a wide range of platforms.
  • CMake’s support for C++20 modules is still experimental, but it is expected to be fully supported in the future.
  • CMake’s support for C++ modules is not limited to C++20, but it will also support C++17 and C++14 modules.
  • CMake’s support for C++ modules is not limited to the C++ standard library, but it will also support third-party libraries and frameworks.
  • CMake’s support for C++ modules is not limited to the build system, but it will also support the testing system and the installer.