A CMake module that automatically downloads and builds Boost libraries with your project's compiler and flags.
Boost CMake is a CMake module that automates the integration of Boost C++ libraries into CMake-based projects. It solves the problem of manually building Boost for different platforms or managing version conflicts by downloading and compiling Boost directly as part of the CMake configuration process. This ensures Boost is built with the same compiler, architecture, and flags as the rest of your project.
C++ developers using CMake as their build system who need to incorporate Boost libraries without dealing with manual compilation or external package managers.
Developers choose Boost CMake because it eliminates platform-specific Boost build hassles, ensures consistent compilation settings, and integrates seamlessly into existing CMake workflows with minimal configuration.
Easy Boost integration in CMake projects
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Downloads minified Boost archives directly during CMake configuration, eliminating manual build steps as highlighted in the motivation section.
Ensures Boost is built with the same compiler, architecture, and flags as the main project, preventing mismatches in cross-platform or sanitizer setups.
Supports overriding download URLs, using local Boost sources, or applying custom patches, allowing integration with internal networks or custom versions.
Uses add_subdirectory() and provides imported targets like Boost::filesystem for easy linking, fitting naturally into CMake workflows.
The README notes that not all Boost libraries are built, requiring community patches for missing ones, which can hinder projects needing less common libraries.
Automatically building Boost from source increases compilation time and disk usage compared to using pre-compiled binaries, impacting fast-paced development cycles.
Relies on specific GitHub archives for downloads, which could become unavailable or change, potentially breaking builds without manual configuration overrides.