Skip to content
name: CMake Multi-Platform CI/CD
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
build-package:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
build_type: [Release]
compiler: [clang, gcc]
include:
- os: ubuntu-latest
compiler: gcc
c_compiler: gcc
cxx_compiler: g++
- os: ubuntu-latest
compiler: clang
c_compiler: clang
cxx_compiler: clang++
- os: windows-latest
compiler: clang
c_compiler: clang-cl
cxx_compiler: clang-cl
exclude:
- os: windows-latest
compiler: gcc
steps:
- uses: actions/checkout@v4
- name: Install LLVM (Windows)
if: matrix.os == 'windows-latest'
run: choco install ninja
- name: Install Linux deps
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgl-dev libgles-dev ninja
- name: Configure CMake
run: cmake --preset release -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_CXX_COMPILER=${{ matrix.cxx_compiler }}
- name: Build
run: cmake --build --preset release
- name: Test
run: ctest --preset release
- name: Package Release
run: cpack --preset tgz-release
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-${{ matrix.compiler }}-package
path: |
build/release/*.tar.gz
build/release/*.zip