Configure, build, and test your CMake project using GitHub Actions. This action simplifies the workflow for configuring the build environment of a CMake project. It can also be optionally specified to build a CMake project using the cmake --build
command and test it using the ctest
command.
- Configures a CMake project using the
cmake
command. - Optionally builds a CMake project using the
cmake --build
command. - Optionally tests a CMake project using the
ctest
command. - Auto-detects and installs required dependencies.
- Supports specifying multiple CMake options directly from the action inputs.
For more information, refer to action.yml and the GitHub Actions guide.
Name | Value Type | Description |
---|---|---|
source-dir |
Path | The source directory of the CMake project. It defaults to the current directory. |
build-dir |
Path | The build directory of the CMake project. It defaults to the build directory inside the source directory. |
generator |
String | The build system generator for the CMake project. It appends the CMake configuration arguments with -G [val] . |
c-compiler |
String | The preferred executable for compiling C language files. It appends the CMake configuration arguments with -D CMAKE_C_COMPILER=[val] . |
cxx-compiler |
String | The preferred executable for compiling C++ language files. It appends the CMake configuration arguments with -D CMAKE_CXX_COMPILER=[val] . |
c-flags |
Multiple strings | Additional flags to pass when compiling C language files. It appends the CMake configuration arguments with -D CMAKE_C_FLAGS=[vals] . |
cxx-flags |
Multiple strings | Additional flags to pass when compiling C++ language files. It appends the CMake configuration arguments with -D CMAKE_CXX_FLAGS=[vals] . |
options |
Multiple strings | Additional options to pass during the CMake configuration. It appends the CMake configuration arguments with each of -D [val] . |
args |
Multiple strings | Additional arguments to pass during the CMake configuration. |
run-build |
true or false |
If enabled, it builds the project using CMake. It defaults to false . |
build-args |
Multiple strings | Additional arguments to pass during the CMake build. |
run-test |
true or false |
If enabled, it runs testing using CTest. It defaults to false . |
test-args |
Multiple strings | Additional arguments to pass during the CTest run. |
Note: Multiple strings mean that the input can be specified with more than one value. Separate each value with a space or a new line.
Note: All inputs are optional.
Name | Value Type | Description |
---|---|---|
build-dir |
Path | The build directory of the CMake project. |
name: Build
on:
push:
jobs:
build-project:
name: Build Project
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Configure Project
uses: threeal/cmake-action@v1.3.0
- name: Build Project
runs: cmake --build build
- name: Test Project
runs: ctest --test-dir build
Note: You can replace
v1.3.0
with any version you prefer. See this.
- name: Configure, Build, and Test Project
uses: threeal/cmake-action@v1.3.0
with:
run-build: true
run-test: true
- name: Configure Project
uses: threeal/cmake-action@v1.3.0
with:
source-dir: submodules
build-dir: submodules/out
- name: Configure Project
uses: threeal/cmake-action@v1.3.0
with:
generator: Ninja
c-compiler: clang
cxx-compiler: clang++
This project is licensed under the terms of the MIT License.
Copyright © 2023-2024 Alfi Maulana