Skip to content

Groundwork in CMake, build workflows, and header include cleanup #266

Groundwork in CMake, build workflows, and header include cleanup

Groundwork in CMake, build workflows, and header include cleanup #266

Workflow file for this run

name: Windows
on: [push, pull_request]
jobs:
vs2022:
strategy:
fail-fast: false
matrix:
arch: ['x86', 'x64']
libs: ['shared', 'static']
config: ['Debug', 'Release']
runs-on: windows-latest
steps:
- uses: actions/[email protected]
with:
submodules: true
fetch-depth: 0
- name: Set target triplet
id: set-variables
shell: pwsh
run: echo "vcpkg_triplet=${{ matrix.arch }}-windows$(if ('${{ matrix.libs }}' -eq 'static') { '-static' })" >> $env:GITHUB_OUTPUT
- name: Cache vcpkg
uses: actions/[email protected]
id: cache-vcpkg
with:
path: build/vcpkg_cache/
key: vcpkg-binaries-${{ steps.set-variables.outputs.vcpkg_triplet }}-${{ hashFiles('vcpkg.json') }}
- name: Create Build Environment
if: ${{ !steps.cache-vcpkg.outputs.cache-hit }}
run: |
cmake -E make_directory build
cmake -E make_directory build/vcpkg_cache
- name: Boostrap vcpkg
shell: pwsh
working-directory: vcpkg/
run: |
./bootstrap-vcpkg.bat
./vcpkg integrate install
- name: Configure
shell: pwsh
env:
VCPKG_ROOT: ${{ github.workspace }}\vcpkg
working-directory: build/
run: |
$vcpkgToolchain = Join-Path $env:VCPKG_ROOT './scripts/buildsystems/vcpkg.cmake' -Resolve
$vcpkgTriplet = '${{ steps.set-variables.outputs.vcpkg_triplet }}'
$cmakeSharedLibs = $(if ('${{ matrix.libs }}' -eq 'shared') { 'ON' } else { 'OFF' })
$msbuildArch = $(if ('${{ matrix.arch }}' -eq 'x64') { 'X64' } else { 'Win32' })
$cachedBinaries = Join-Path $(Get-Location) './vcpkg_cache/' -Resolve
$cacheAccess = $(if ('${{ steps.cache-vcpkg.outputs.cache-hit }}' -eq 'true') { 'read' } else { 'write' })
$env:VCPKG_BINARY_SOURCES = "clear;files,$cachedBinaries,$cacheAccess"
cmake "-DCMAKE_TOOLCHAIN_FILE=$vcpkgToolchain" "-DVCPKG_TARGET_TRIPLET=$vcpkgTriplet" "-DBUILD_SHARED_LIBS=$cmakeSharedLibs" -G "Visual Studio 17 2022" -A "$msbuildArch" ${{ github.workspace }}
- name: Build
working-directory: build/
run: cmake --build . --config ${{ matrix.config }} -j -v
- name: Test
working-directory: build/
run: ctest -C ${{ matrix.config }} --output-on-failure