Skip to content

build: Add Windows CMake presets #90

build: Add Windows CMake presets

build: Add Windows CMake presets #90

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: x64-debug
cmake_build_preset_name: windows-x64-debug
runs-on: windows-latest
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
--rng-seed 1654047489
--durations yes
--reporter console::out=-::colour-mode=ansi
working-directory: ${{github.workspace}}\out\build\${{ env.cmake_configure_preset_name }}\${{ env.config }}
linux:
name: Build and test on Ubuntu
runs-on: ubuntu-latest
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.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 }}"
- name: Build
run: cmake --build "${{ env.build_dir }}" --config "${{ env.config }}"
- 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
--rng-seed 1654047489
--durations yes
--reporter console::out=-::colour-mode=ansi
working-directory: ${{ env.build_dir }}