| name: Test |
| on: [ push, pull_request ] |
| jobs: |
| test: |
| name: ${{ matrix.os }}, ${{ matrix.cmake_name }} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ windows-2019, macos-10.15, ubuntu-20.04 ] |
| cmake: [ 3.15, 3.x ] |
| include: |
| - os: windows-2019 |
| static_postfix: _static |
| tree: tree /F |
| CXX: cl |
| |
| - os: ubuntu-20.04 |
| tree: tree |
| |
| - os: macos-10.15 |
| tree: find |
| |
| - cmake: 3.15 |
| cmake_name: CMake 3.15 |
| - cmake: 3.x |
| cmake_name: Latest CMake |
| env: |
| # CMake 3.15 doesn't detect Visual Studio correctly without these. |
| CXX: ${{ matrix.CXX }} |
| CC: ${{ matrix.CXX }} |
| runs-on: ${{ matrix.os }} |
| steps: |
| # System set-up |
| - uses: actions/checkout@v2 |
| - uses: ilammy/msvc-dev-cmd@v1 |
| - uses: seanmiddleditch/gha-setup-ninja@master |
| - uses: jwlawson/actions-setup-cmake@v1.8 |
| with: |
| cmake-version: ${{ matrix.cmake }} |
| |
| # Static Debug |
| - name: "Static Debug: Configure" |
| run: cmake -G Ninja -S . -B build-static-dbg -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_DEBUG_POSTFIX=d${{matrix.static_postfix}}" |
| - name: "Static Debug: Build" |
| run: cmake --build build-static-dbg |
| - name: "Static Debug: Test" |
| run: ctest --output-on-failure |
| working-directory: build-static-dbg |
| |
| # Shared Debug |
| - name: "Shared Debug: Configure" |
| run: cmake -G Ninja -S . -B build-shared-dbg -DCMAKE_BUILD_TYPE=Debug -DCMAKE_DEBUG_POSTFIX=d -DBUILD_SHARED_LIBS=ON |
| - name: "Shared Debug: Build" |
| run: cmake --build build-shared-dbg |
| - name: "Shared Debug: Test" |
| run: ctest --output-on-failure |
| working-directory: build-shared-dbg |
| |
| # Static Release |
| - name: "Static Release: Configure" |
| run: cmake -G Ninja -S . -B build-static-rel -DCMAKE_BUILD_TYPE=Release "-DCMAKE_RELEASE_POSTFIX=${{matrix.static_postfix}}" |
| - name: "Static Release: Build" |
| run: cmake --build build-static-rel |
| - name: "Static Release: Test" |
| run: ctest --output-on-failure |
| working-directory: build-static-rel |
| |
| # Shared Release |
| - name: "Shared Release: Configure" |
| run: cmake -G Ninja -S . -B build-shared-rel -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON |
| - name: "Shared Release: Build" |
| run: cmake --build build-shared-rel |
| - name: "Shared Release: Test" |
| run: ctest --output-on-failure |
| working-directory: build-shared-rel |
| |
| # Joint install |
| - name: Install |
| run: | |
| cmake --install build-shared-dbg --prefix install |
| cmake --install build-static-dbg --prefix install |
| cmake --install build-shared-rel --prefix install |
| cmake --install build-static-rel --prefix install |
| - name: List install tree |
| run: ${{matrix.tree}} install |
| |
| # Test find_package |
| - name: "Test find_package: Static Debug" |
| run: >- |
| ctest --build-and-test test test-static-dbg |
| --build-generator Ninja |
| --build-options -DCMAKE_BUILD_TYPE=Debug -Dtinyxml2_SHARED_LIBS=NO -DCMAKE_PREFIX_PATH=${{github.workspace}}/install |
| --test-command ctest --output-on-failure |
| - name: "Test find_package: Static Release" |
| run: >- |
| ctest --build-and-test test test-static-rel |
| --build-generator Ninja |
| --build-options -DCMAKE_BUILD_TYPE=Release -Dtinyxml2_SHARED_LIBS=NO -DCMAKE_PREFIX_PATH=${{github.workspace}}/install |
| --test-command ctest --output-on-failure |
| - name: "Test find_package: Shared Debug" |
| run: >- |
| ctest --build-and-test test test-shared-dbg |
| --build-generator Ninja |
| --build-options -DCMAKE_BUILD_TYPE=Debug -Dtinyxml2_SHARED_LIBS=YES -DCMAKE_PREFIX_PATH=${{github.workspace}}/install |
| --test-command ctest --output-on-failure |
| - name: "Test find_package: Shared Release" |
| run: >- |
| ctest --build-and-test test test-shared-rel |
| --build-generator Ninja |
| --build-options -DCMAKE_BUILD_TYPE=Release -Dtinyxml2_SHARED_LIBS=YES -DCMAKE_PREFIX_PATH=${{github.workspace}}/install |
| --test-command ctest --output-on-failure |