Build Systems For C++Build SystemsBuild Systems

    GNU Make

    Quite OK for (very) small projects. Every C++ programmer should know how to use Make.

    • ubiquitous, portable
    • a lot of limitations
    • not very expressive syntax

    CMake

    Seems to be(come) the de-facto standard in the C++ world.

    • available on a lot of platforms
    • lot of tutorials, resources, etc.
    • used as project model by some IDEs
    • can be slow at times
    • carries a lot of techincal debt
    • clumsy syntax

    Bazel

    • fast, seems to scale well
    • rather rigid project organization
    • has many dependencies itself

    MSBuild

    • Command-line based build system from Microsoft packaged with Microsoft Visual Studio , but also available as stand-alone application.
    • XML-based build files
    • supported by , C++Builder

    build2

    • uniform across platforms, no project generation step
    • supports wildcard patterns
    • support for C++ Modules
    • support for cross-compilation
    • skips recompilation of ignorable changes (comments, whitespaces, etc).
    • dependency management
    • no dependencies, only C++ compiler required

    QMake

    Part of the Qt Project .

    SCons

    • automatic dependency analysis
    • uses a real programming language (Python) for config files
    • pretty verbose; even common tasks require a lot of code
    • can be slow for big projects

    Premake

    Ninja

    Meson

    FASTbuild

    Gradle

    Waf

    Evoke

    Fairly new system still under development.

    GNU autotools

    My advice: stay away from autotools if you can.