diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml index 3ab6b5d9..b923a81a 100644 --- a/.github/workflows/compilers.yml +++ b/.github/workflows/compilers.yml @@ -80,11 +80,17 @@ jobs: VisualStudio: strategy: matrix: - generator: [ 'Visual Studio 17 2022' ] image: [ windows-2022, windows-2025 ] build_type: [ Debug, Release ] - extra_args: [ '', '-T ClangCL' ] + toolset: [ '', 'ClangCL' ] cxx_version: [ 14, 17, 20, 23 ] + include: + # Regular MSVC builds use Ninja (from preset) + - toolset: '' + generator_override: '' + # ClangCL builds require Visual Studio generator + - toolset: 'ClangCL' + generator_override: '-G "Visual Studio 17 2022" -T ClangCL' runs-on: ${{ matrix.image }} steps: - uses: actions/checkout@v4 @@ -94,7 +100,7 @@ jobs: uses: ./.github/workflows/cmake with: cmake_preset: msvc-${{ matrix.cxx_version }}-${{ matrix.build_type == 'Debug' && 'debug' || 'release' }} - extra_cmake_configure_args: ${{ matrix.extra_args }} - extra_cmake_build_args: --config ${{ matrix.build_type }} - extra_ctest_args: -C ${{ matrix.build_type }} + extra_cmake_configure_args: ${{ matrix.generator_override }} + extra_cmake_build_args: ${{ matrix.toolset == 'ClangCL' && format('--config {0}', matrix.build_type) || '' }} + extra_ctest_args: ${{ matrix.toolset == 'ClangCL' && format('-C {0}', matrix.build_type) || '' }} diff --git a/CMakePresets.json b/CMakePresets.json index eed32e24..a3a599bf 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -15,14 +15,12 @@ "name": "msvc-base", "inherits": "base", "hidden": true, - "generator": "Visual Studio 17 2022", + "generator": "Ninja", "condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "Windows" }, - "toolset": "host=x64", - "architecture": "x64", "cacheVariables": { "CMAKE_CXX_COMPILER": "cl" } @@ -31,7 +29,7 @@ "name": "gcc-base", "inherits": "base", "hidden": true, - "generator": "Unix Makefiles", + "generator": "Ninja", "cacheVariables": { "CMAKE_CXX_COMPILER": "g++", "CMAKE_C_COMPILER": "gcc" @@ -41,7 +39,7 @@ "name": "clang-base", "inherits": "base", "hidden": true, - "generator": "Unix Makefiles", + "generator": "Ninja", "cacheVariables": { "CMAKE_CXX_COMPILER": "clang++", "CMAKE_C_COMPILER": "clang"