Skip to content

Add CI workflow

Add CI workflow #1

Workflow file for this run

name: Build and test with CMake
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
build_type:
- Release
c_compiler:
- gcc
- clang
include:
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
- os: ubuntu-latest
c_compiler: clang
cpp_compiler: clang++
steps:
- uses: actions/checkout@v3
- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
echo "build-output-dir=${{github.workspace}}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: >
cmake
-B ${{steps.strings.outputs.build-output-dir}}
-DCMAKE_CXX_COMPILER=${{matrix.cpp_compiler}}
-DCMAKE_C_COMPILER=${{matrix.c_compiler}}
-DCMAKE_BUILD_TYPE=${{matrix.build_type}}
-S ${{github.workspace}}
- name: Build
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{steps.strings.outputs.build-output-dir}} --config ${{matrix.build_type}}
- name: Test
working-directory: ${{steps.strings.outputs.build-output-dir}}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --build-config ${{matrix.build_type}}