name: CMake on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: build_type: [Release, Debug] os: [macos-latest, ubuntu-latest, windows-latest] CC: [clang, gcc, cl] gcc_version: [latest, 11] exclude: # macos+clang only - os: macos-latest CC: gcc - os: macos-latest CC: cl # cl for windows only - os: ubuntu-latest CC: cl - os: windows-latest CC: gcc - os: windows-latest CC: clang - CC: clang gcc_version: 11 steps: - uses: actions/checkout@v2 - name: Install GCC if: matrix.CC == 'gcc' uses: egor-tensin/setup-gcc@v1 with: version: ${{ matrix.gcc_version }} - name: Build env: CC: ${{ matrix.CC }} run: | cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON tests cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} - name: Test working-directory: ${{github.workspace}}/build run: ctest -C ${{matrix.build_type}} - name: Build (samples) env: CC: ${{ matrix.CC }} run: | cmake -B ${{github.workspace}}/build_samples -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON samples cmake --build ${{github.workspace}}/build_samples --config ${{matrix.build_type}}