name: CMake env: VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' on: push: branches: [ main ] pull_request: branches: [ main ] workflow_dispatch: jobs: build: name: "${{ matrix.configurations.name }} | ${{ matrix.cmake-build-type }}" runs-on: ${{ matrix.configurations.os }} strategy: fail-fast: false matrix: configurations: - name: Ubuntu 18.04 os: ubuntu-18.04 - name: Ubuntu 20.04 os: ubuntu-20.04 - name: Windows 2019 os: windows-2019 - name: MacOS 10.15 os: macos-10.15 cmake-build-type: [Debug, Release] steps: - uses: actions/checkout@v2 - name: Create vcpkg build folder run: | mkdir -p ${{runner.workspace}}/build/vcpkg_installed mkdir -p ${{runner.workspace}}/build/_deps - name: Cache vcpkg uses: actions/cache@v2 env: cache-name: vcpkg-modules with: path: | ${{runner.workspace}}/build/vcpkg_installed ${{runner.workspace}}/build/_deps key: ${{ runner.os }}-${{ matrix.cmake-build-type }}-${{ hashFiles('vcpkg.json') }} - name: Fix Path on Ubuntu if: matrix.configurations.os == 'ubuntu-20.04' || matrix.configurations.os == 'ubuntu-18.04' run: echo "/home/runner/.local/bin" >> $GITHUB_PATH - name: Install Linux dependencies if: matrix.configurations.os == 'ubuntu-20.04' || matrix.configurations.os == 'ubuntu-18.04' run: sudo apt-get update && sudo apt-get install -y libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libudev-dev make ninja-build cmake - 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 - name: Configure CMake working-directory: ${{runner.workspace}}/build # Use a bash shell so we can use the same syntax for environment variable # access regardless of the host operating system shell: bash run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.cmake-build-type }} - name: Build working-directory: ${{runner.workspace}}/build shell: bash # Execute the build. You can specify a specific target with "--target " run: cmake --build . --config ${{ matrix.cmake-build-type }} - name: Test working-directory: ${{runner.workspace}}/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 -C ${{ matrix.cmake-build-type }}