Skip to content

Use CMake presets

Use CMake presets #199

name: Building and testing
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
BUILD_DIR: ${{ github.workspace }}/build
CONFIG: Debug
permissions: {}
jobs:
windows_vcpp:
name: Build and test on Windows with VC++
env:
CMAKE_CONFIGURE_PRESET_NAME: windows-x64-debug
CMAKE_BUILD_PRESET_NAME: windows-x64-debug
runs-on: windows-2022
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Check out vcpkg
uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
path: ${{ github.workspace }}\vcpkg
persist-credentials: false
- name: Bootstrap vcpkg
run: .\vcpkg\bootstrap-vcpkg.bat -disableMetrics
- name: Apply vcpkg cache
id: vcpkg-cache
uses: actions/cache@v4
with:
path: |-
%VCPKG_DEFAULT_BINARY_CACHE%
${{ github.workspace }}\vcpkg
key: >-
${{ runner.os }}-vcpkg-archives-cache-${{ hashFiles(
'vcpkg\ports\catch2\vcpkg.json',
'vcpkg\ports\fmt\vcpkg.json',
'vcpkg\ports\nameof\vcpkg.json',
'vcpkg\ports\nanobench\vcpkg.json'
) }}
- name: Configure CMake
run: >-
cmake
--preset "${{ env.CMAKE_CONFIGURE_PRESET_NAME }}"
- name: Build
run: >-
cmake
--build
--preset "${{ env.CMAKE_BUILD_PRESET_NAME }}"
- name: Run tests
run: >-
.\tests.exe
--reporter console::out=-::colour-mode=ansi
--rng-seed 1654047489
--success
working-directory: ${{ github.workspace }}\out\build\${{ env.CMAKE_CONFIGURE_PRESET_NAME }}\${{ env.CONFIG }}
- name: Run benchmarks
run: >-
.\benchmark.exe
--durations yes
--reporter console::out=-::colour-mode=ansi
--rng-seed 1654047489
working-directory: ${{ github.workspace }}\out\build\${{ env.CMAKE_CONFIGURE_PRESET_NAME }}\${{ env.CONFIG }}
linux:
name: Build and test on Ubuntu
env:
CMAKE_CONFIGURE_PRESET_NAME: generic
CMAKE_BUILD_PRESET_NAME: generic
runs-on: ubuntu-22.04
steps:
- name: Install Ninja
run: |-
sudo apt-get update
sudo apt-get install ninja-build
- name: Check out repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Check out vcpkg
uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
path: ${{ github.workspace }}/vcpkg
persist-credentials: false
- name: Bootstrap vcpkg
run: ./vcpkg/bootstrap-vcpkg.sh -disableMetrics
- name: Apply vcpkg cache
id: vcpkg-cache
uses: actions/cache@v4
with:
path: |-
%VCPKG_DEFAULT_BINARY_CACHE%
${{ github.workspace }}/vcpkg
key: >-
${{ runner.os }}-vcpkg-archives-cache-${{ hashFiles(
'vcpkg/ports/catch2/vcpkg.json',
'vcpkg/ports/fmt/vcpkg.json',
'vcpkg/ports/nameof/vcpkg.json',
'vcpkg/ports/nanobench/vcpkg.json'
) }}
- name: Configure CMake
run: >-
cmake
-B "${{ env.BUILD_DIR }}"
-DBUILD_SHARED_LIBS=TRUE
-DCMAKE_BUILD_TYPE="${{ env.CONFIG }}"
--preset "${{ env.CMAKE_CONFIGURE_PRESET_NAME }}"
- name: Build
run: >-
cmake
--build "${{ env.BUILD_DIR }}"
--config "${{ env.CONFIG }}"
--preset "${{ env.CMAKE_CONFIGURE_PRESET_NAME }}"
- name: Run tests
run: >-
./tests
--reporter console::out=-::colour-mode=ansi
--rng-seed 1654047489
--success
working-directory: ${{ env.BUILD_DIR }}
- name: Run benchmarks
run: >-
./benchmark
--durations yes
--reporter console::out=-::colour-mode=ansi
--rng-seed 1654047489
working-directory: ${{ env.BUILD_DIR }}