Skip to content

threeal/cmake-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

CMake Action

Configure and build CMake projects on GitHub Actions.

This action wraps the cmake command for configuring and building CMake projects. It provides a more streamlined syntax for specifying build options compared to calling the cmake command directly.

Available Inputs

Name Value Type Description
source-dir Path The source directory of the CMake project. Defaults to the current working directory.
build-dir Path The build directory of the CMake project. Defaults to the build directory inside the source directory.
generator String The build system generator for the CMake project. Equivalent to setting the -G option.
c-compiler String The preferred executable for compiling C language files. Equivalent to defining the CMAKE_C_COMPILER variable.
cxx-compiler String The preferred executable for compiling C++ language files. Equivalent to defining the CMAKE_CXX_COMPILER variable.
c-flags Multiple strings Additional flags to pass when compiling C language files. Equivalent to defining the CMAKE_C_FLAGS variable.
cxx-flags Multiple strings Additional flags to pass when compiling C++ language files. Equivalent to defining the CMAKE_CXX_FLAGS variable.
options Multiple strings Additional options to pass during the CMake configuration. Equivalent to setting the -D option.
args Multiple strings Additional arguments to pass during the CMake configuration.
run-build true or false If enabled, builds the project using CMake. Defaults to true.
build-args Multiple strings Additional arguments to pass during the CMake build.

Available Outputs

Name Value Type Description
build-dir Path The build directory of the CMake project.

Example Usages

This example demonstrates how to use this action to configure and build a CMake project in a GitHub Actions workflow:

name: Build
on:
  push:
jobs:
  build-project:
    name: Build Project
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout Project
        uses: actions/[email protected]

      - name: Build Project
        uses: threeal/[email protected]

Specify the Source and Build Directories

By default, this action uses the current working directory as the source directory and the build directory inside the source directory as the build directory. To use different directories, set the source-dir and/or build-dir inputs:

- name: Build Project
  uses: threeal/[email protected]
  with:
    source-dir: source
    build-dir: output

Specify Build System Generator and Compiler

The following example demonstrates how to use this action to configure and build the project using Ninja as the build system generator and Clang as the compiler:

- name: Setup Ninja
  uses: seanmiddleditch/gha-setup-ninja@v5

- name: Build Project
  uses: threeal/[email protected]
  with:
    generator: Ninja
    cxx-compiler: clang++

Specify Additional Options

Use the options input to specify additional options for configuring a project:

- name: Build Project
  uses: threeal/[email protected]
  with:
    options: |
      BUILD_TESTS=ON
      BUILD_EXAMPLES=ON

The above example is equivalent to calling the cmake command with the -DBUILD_TESTS=ON and -DBUILD_EXAMPLES=ON arguments.

Configure Project Without Building

By default, this action builds the project after configuration. To skip the build process, set the run-build option to false:

- name: Configure Project
  uses: threeal/[email protected]
  with:
    run-build: false

License

This project is licensed under the terms of the MIT License.

Copyright © 2023-2024 Alfi Maulana