Skip to content

push rules changes

push rules changes #2

Workflow file for this run

name: Cross-Platform C++ Build
on:
push:
# Jobs are skipped when ONLY Markdown (*.md) files are changed
paths-ignore:
- '**.md'
pull_request:
paths-ignore:
- '**.md'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
build_type: [Release]
include:
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
- os: windows-latest
c_compiler: cl
cpp_compiler: cl
- os: macos-latest
c_compiler: clang
cpp_compiler: clang++
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up build environment
run: |
echo "Build type: ${{ matrix.build_type }}"
echo "OS: ${{ matrix.os }}"
echo "C compiler: ${{ matrix.c_compiler }}"
echo "C++ compiler: ${{ matrix.cpp_compiler }}"
# Linux specific setup
- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y build-essential cmake
# macOS specific setup
- name: Install dependencies (macOS)
if: runner.os == 'macOS'
run: |
brew install cmake
# Windows specific setup
- name: Setup MSVC (Windows)
if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
run: |
cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
- name: Build
run: |
cmake --build build --config ${{ matrix.build_type }}
# Optional: Run tests if you have any
- name: Test
working-directory: build
run: |
ctest --build-config ${{ matrix.build_type }} --verbose
# Upload build artifacts
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.os }}-${{ matrix.build_type }}
path: |
build/
!build/**/*.o
!build/**/*.obj
!build/**/CMakeFiles/
retention-days: 7