A comprehensive enhancement suite for CMake, adding modern scripting capabilities, dependency management, and a rich standard library.
CMake++ is an enhancement suite for the CMake build system that extends CMake's native capabilities with a comprehensive library of functions for advanced scripting, dependency management, and build automation. It solves the problem of CMake's limited scripting language by adding features like structured data types, an HTTP client, templating, and an interactive shell, enabling developers to write more complex and maintainable build scripts.
CMake users and C/C++ developers who need to manage complex build processes, automate dependency resolution, or write sophisticated cross-platform build scripts beyond CMake's native capabilities.
Developers choose CMake++ because it dramatically expands what's possible within CMake scripts without leaving the CMake ecosystem, offering a rich standard library that reduces external tool dependency and enables more expressive, maintainable build logic.
An Enhancement Suite for the CMake Build System
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Adds maps, objects, promises, and functional programming to CMake, enabling complex data handling as detailed in the Collections and Tasks sections of the README.
Provides functions to fetch, install, and manage packages directly within CMake scripts, reducing reliance on external tools, with samples showing how to pull libraries like Eigen.
Includes HTTP client, filesystem operations, templating, and logging, as documented in feature overviews like the web and filesystem modules.
Offers icmakepp for experimenting with CMake and CMake++ functions, though the README admits usability limitations such as termination on errors.
Requires running console scripts or manual setup of aliases and environment variables, as detailed in the installation section, which can be error-prone compared to simple CMake includes.
Functions are documented across multiple README files, making it hard to browse and find specific utilities without deep exploration, as noted in the 'Feature Overview' where users must navigate many sub-sections.
The icmakepp shell terminates on input errors due to CMake's limitations, hindering interactive use, as admitted in the README where it states 'the shell will terminate because cmake terminates'.