A GitHub Action to build C++ applications with CMake (using CMakePresets.json), Ninja, and vcpkg in CI workflows.
run-cmake is a GitHub Action that automates building C++ applications in CI/CD pipelines using CMake, Ninja, and vcpkg. It solves the problem of setting up complex C++ build environments on GitHub runners by providing a standardized, reproducible workflow that leverages CMakePresets.json for configuration.
C++ developers and teams using GitHub Actions for continuous integration who need a reliable, automated build process for their projects.
Developers choose run-cmake because it reduces CI configuration complexity, ensures consistency with local builds, and provides valuable features like inline error annotations and automatic log handling that streamline debugging and maintenance.
GitHub Action to build C++ applications with CMake (CMakePresets.json), Ninja and vcpkg on GitHub.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enforces the use of CMakePresets.json for consistent, reproducible build settings across local and CI environments, aligning with the README's philosophy of pure workflows.
Automatically creates inline annotations in source files for CMake and compiler errors/warnings, improving issue identification in pull requests without manual log scanning.
Handles environment configuration for MSVC toolchain on Windows runners automatically, eliminating manual steps for setting up Visual Studio build tools.
Works with vcpkg for dependency management, supporting both toolchain usage and direct installation, which simplifies handling C++ libraries in CI as shown in the samples.
Requires projects to adopt CMakePresets.json, vcpkg, and Ninja, which can be a barrier for teams with existing custom build scripts or different dependency managers like Conan.
As a GitHub Action, it locks the build process into GitHub's ecosystem, making migration to other CI systems like GitLab CI or Jenkins difficult without significant rework.
For simple C++ projects with straightforward builds, the additional configuration and reliance on multiple tools might introduce unnecessary complexity compared to basic CMake scripts.