name: Visual Studio versions on: workflow_call: workflow_dispatch: permissions: {} jobs: build: strategy: matrix: toolset: - msvc143 - vs2022 - msvc145 - vs2026 include: # Runner image. - {toolset: msvc143, os: windows-2022} - {toolset: vs2022, os: windows-2022} - {toolset: msvc145, os: windows-2025} - {toolset: vs2026, os: windows-2025} # Boost version. - boost-version: 1.91.0 # Some Boost libraries commonly used by me. - libraries: filesystem program_options regex test # Build settings. - platform: x64 - configuration: Release runs-on: ${{ matrix.os }} name: ${{ matrix.toolset }} steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - name: Cache Boost uses: actions/cache@v6 with: path: '${{ runner.workspace }}/boost/boost_*.tar.gz' key: 'boost_${{ matrix.boost-version }}' - name: Set common variables uses: $/.github/actions/common-variables with: toolset: ${{ matrix.toolset }} - name: Clean up PATH uses: egor-tensin/cleanup-path@v5 if: env.CI_HOST_WINDOWS - name: Set up Python uses: actions/setup-python@v7 with: python-version: '3.x' - name: Set up software environment uses: $/.github/actions/software-environment - name: Download Boost uses: $/.github/actions/download-boost with: boost-version: ${{ matrix.boost-version }} - name: Build Boost uses: $/.github/actions/build-boost with: toolset: ${{ matrix.toolset }} libraries: ${{ matrix.libraries }} platform: ${{ matrix.platform }} configuration: ${{ matrix.configuration }} continue-on-error: true - name: Check that Boost was bootstrapped uses: $/.github/actions/check-boost-bootstrapped - name: Check that Boost libraries were built uses: $/.github/actions/check-boost-libraries with: libraries: ${{ matrix.libraries }} platform: ${{ matrix.platform }} configuration: ${{ matrix.configuration }} - name: Build examples/boost id: build_example uses: $/.github/actions/build-example with: src_dir: test/examples/boost boost_dir: ${{ env.BOOST_DIR }} toolset: ${{ matrix.toolset }} platform: ${{ matrix.platform }} configuration: ${{ matrix.configuration }} - name: Verify runtime library linkage uses: $/.github/actions/check-runtime-library with: install_dir: ${{ steps.build_example.outputs.install_dir }} - name: Verify architecture uses: $/.github/actions/check-arch with: install_dir: ${{ steps.build_example.outputs.install_dir }} expected: ${{ matrix.platform }} - name: Run examples/boost uses: $/.github/actions/run-example-boost with: install_dir: ${{ steps.build_example.outputs.install_dir }}