diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 42aef854..8be09c45 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -14,6 +14,8 @@ jobs: # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} + # Allow specifying a container per-matrix to avoid duplicating jobs + container: ${{ matrix.config.container }} strategy: fail-fast: false @@ -103,6 +105,22 @@ jobs: cxx: "g++-14", cxxver: 20, } + - { + name: "Linux g++ 15 (Debian) C++17", + os: ubuntu-24.04, + container: debian:testing, + buildtype: Release, + cxx: "g++-15", + cxxver: 17, + } + - { + name: "Linux g++ 15 (Debian) C++20", + os: ubuntu-24.04, + container: debian:testing, + buildtype: Release, + cxx: "g++-15", + cxxver: 20, + } - { name: "Linux clang-13 C++17", os: ubuntu-22.04, @@ -472,6 +490,14 @@ jobs: sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa sudo apt-get install g++-14 + - name: Install GCC 15 and tools (Debian container) + if: matrix.config.container == 'debian:testing' && matrix.config.cxx == 'g++-15' + shell: bash + run: | + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + g++-15 cmake ninja-build build-essential pkg-config + - name: Install MSVC 2017 id: install_msvc_2017 if: startsWith(matrix.config.os, 'windows-2019') && ( matrix.config.cxx == 'cl' ) && ( matrix.config.msvcver == 2017 ) @@ -501,14 +527,14 @@ jobs: - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands - run: cmake -E make_directory ${{runner.workspace}}/build + run: cmake -E make_directory "build" - name: Configure CMake if: (!contains(matrix.config.mingw, 'MINGW')) # Use a bash shell so we can use the same syntax for environment variable # access regardless of the host operating system shell: bash - working-directory: ${{runner.workspace}}/build + working-directory: build env: CXX: ${{ matrix.config.cxx }} # Note the current convention is to use the -S and -B options here to specify source @@ -528,15 +554,16 @@ jobs: - name: Build if: (!contains(matrix.config.mingw, 'MINGW')) - working-directory: ${{runner.workspace}}/build + working-directory: build shell: bash # Execute the build. You can specify a specific target with "--target " run: cmake --build . --config ${{ matrix.config.buildtype }} - name: Test if: (!contains(matrix.config.mingw, 'MINGW')) - working-directory: ${{runner.workspace}}/build + working-directory: build shell: bash # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: ctest --output-on-failure -C ${{ matrix.config.buildtype }} +