github action #19 #84
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI Build | |
on: | |
push: | |
branches: [main, dev] | |
pull_request: | |
branches: [main] | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
include: | |
- os: windows-latest | |
c_compiler: cl | |
cpp_compiler: cl | |
- os: ubuntu-latest | |
c_compiler: gcc | |
cpp_compiler: g++ | |
- os: macos-latest | |
c_compiler: clang | |
cpp_compiler: clang++ | |
steps: | |
- uses: actions/checkout@v4 | |
# Install dependencies for Ubuntu | |
- name: Install dependencies (Ubuntu) | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y ninja-build qt6-base-dev qt6-base-dev-tools libgl1-mesa-dev libglu1-mesa-dev | |
echo "CMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu/cmake/Qt6" >> $GITHUB_ENV | |
# Install dependencies for macOS | |
- name: Install dependencies (macOS) | |
if: matrix.os == 'macos-latest' | |
run: | | |
brew install ninja qt | |
echo "CMAKE_PREFIX_PATH=$(brew --prefix qt)" >> $GITHUB_ENV | |
# Install Visual Studio Build Tools on Windows | |
- name: Install Visual Studio Build Tools (Windows) | |
if: matrix.os == 'windows-latest' | |
shell: powershell | |
run: | | |
choco install visualstudio2022buildtools -y | |
choco install ninja -y | |
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' -y | |
# Set up MSVC environment | |
- name: Set up MSVC environment (Windows) | |
if: matrix.os == 'windows-latest' | |
shell: cmd | |
run: | | |
FOR /F "tokens=*" %%i IN ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" ^ | |
-latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath') DO SET VS_PATH=%%i | |
IF NOT DEFINED VS_PATH ( | |
echo Visual Studio Build Tools not found! | |
exit /b 1 | |
) | |
SET "VS_VARS_CMD=%VS_PATH%\VC\Auxiliary\Build\vcvars64.bat" | |
echo Using vcvars64.bat from: %VS_VARS_CMD% | |
CALL "%VS_VARS_CMD%" || exit /b 1 | |
where cl || exit /b 1 # Ensure cl.exe is in PATH | |
# Configure CMake for Windows | |
- name: Configure CMake (Windows) | |
if: matrix.os == 'windows-latest' | |
shell: cmd | |
run: | | |
cmake -B "%GITHUB_WORKSPACE%\build" ^ | |
-DCMAKE_CXX_COMPILER=cl ^ | |
-DCMAKE_C_COMPILER=cl ^ | |
-DCMAKE_BUILD_TYPE=Release ^ | |
-G "Ninja" ^ | |
-S "%GITHUB_WORKSPACE%" | |
# Configure CMake for other platforms | |
- name: Configure CMake (Other Platforms) | |
if: matrix.os != 'windows-latest' | |
run: | | |
cmake -B "${{ github.workspace }}/build" \ | |
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ | |
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-G "Ninja" \ | |
-S "${{ github.workspace }}" | |
# Build the project | |
- name: Build | |
run: cmake --build "${{ github.workspace }}/build" --config Release | |
# Run tests | |
- name: Test | |
working-directory: "${{ github.workspace }}/build" | |
run: ctest --output-on-failure --build-config Release |