Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
11e8387
cleaned: PM::Property API
MostafaNanticock Aug 30, 2025
4b8263e
Merge branch 'main' into develop
MostafaNanticock Aug 30, 2025
f33d707
Fixed: build errors with clang and gcc
MostafaNanticock Aug 30, 2025
3a3bb8d
Merge branch 'main' into develop
MostafaNanticock Aug 30, 2025
706a2b5
Update cmake-multi-platform.yml
MostafaNanticock Aug 30, 2025
61eb85c
Added: MacOS
MostafaNanticock Aug 30, 2025
3416aa1
modularized build workflows
MostafaNanticock Aug 30, 2025
9e40752
removed multi-platform-build pipeline
MostafaNanticock Aug 30, 2025
a2aee09
Add CI build status badges to README
MostafaNanticock Aug 30, 2025
9b3d299
Centralize CI matrix config and add Qt version matrix
MostafaNanticock Aug 30, 2025
f75b242
Fix Qt5 macOS build error in propertyValueChanged handler
MostafaNanticock Aug 30, 2025
1285010
Update main.cpp
MostafaNanticock Aug 30, 2025
5e3c53b
Enable propertyValueChanged logging and add QString include
MostafaNanticock Aug 30, 2025
8989230
Fix Qt5 macOS build error in propertyValueChanged handler
MostafaNanticock Aug 30, 2025
8d6e8dd
Update PropertyGridTreeModel.h
MostafaNanticock Aug 30, 2025
acbf3a7
Add Qt::Core to CMake and create PM::PropertyGrid alias
MostafaNanticock Aug 30, 2025
3def42d
Refactor PropertyGridTreeModel includes and cleanup
MostafaNanticock Aug 30, 2025
2148c47
Update matrix-config.yml
MostafaNanticock Aug 30, 2025
9d1970f
Update Qt target linking for compatibility with older Qt versions
MostafaNanticock Aug 30, 2025
d368067
Add Qt version compatibility for QMetaType name retrieval
MostafaNanticock Aug 30, 2025
8fe6ea5
Refactor Qt compatibility helpers into QtCompat_p.h
MostafaNanticock Aug 30, 2025
4bf76c1
Replace siblingAtColumn with PM::internal::siblingAtColumn
MostafaNanticock Aug 30, 2025
3f8109d
Replace siblingAtColumn with PM::internal::siblingAtColumn
MostafaNanticock Aug 30, 2025
b246afd
Add separate macOS Intel and ARM build jobs
MostafaNanticock Aug 30, 2025
615317a
Add dynamic job names to CI workflows
MostafaNanticock Aug 30, 2025
5bf07cf
Update README and example for improved Qt compatibility
MostafaNanticock Aug 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/workflows/build-shared.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Shared Build Logic

on:
workflow_call:
inputs:
os:
required: true
type: string
c_compiler:
required: true
type: string
cpp_compiler:
required: true
type: string
qt_version:
required: true
type: string

jobs:
build:
runs-on: ${{ inputs.os }}
steps:
- uses: actions/checkout@v4

- name: Set reusable strings
id: strings
shell: bash
run: echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"

- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: ${{ inputs.qt_version }}
install-deps: 'true'
set-env: 'true'

- name: Configure CMake
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_C_COMPILER=${{ inputs.c_compiler }}
-DCMAKE_CXX_COMPILER=${{ inputs.cpp_compiler }}
-DCMAKE_BUILD_TYPE=Release
-S ${{ github.workspace }}

- name: Build
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release

- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
run: ctest --build-config Release
33 changes: 33 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Linux Build

on:
workflow_dispatch:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]

jobs:
get-matrix:
uses: ./.github/workflows/matrix-config.yml

build-linux:
name: linux-${{ matrix.c_compiler }}-qt${{ matrix.qt_version }}
needs: get-matrix
strategy:
fail-fast: false
matrix:
c_compiler: ${{ fromJson(needs.get-matrix.outputs.compilers_linux) }}
qt_version: ${{ fromJson(needs.get-matrix.outputs.qt_versions) }}
include:
- c_compiler: gcc
cpp_compiler: g++
- c_compiler: clang
cpp_compiler: clang++

uses: ./.github/workflows/build-shared.yml
with:
os: ubuntu-latest
c_compiler: ${{ matrix.c_compiler }}
cpp_compiler: ${{ matrix.cpp_compiler }}
qt_version: ${{ matrix.qt_version }}
59 changes: 59 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: macOS Build

on:
workflow_dispatch:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]

jobs:
get-matrix:
uses: ./.github/workflows/matrix-config.yml

build-macos-intel:
name: macos-${{ matrix.c_compiler }}-qt${{ matrix.qt_version }}-intel
needs: get-matrix
strategy:
fail-fast: false
matrix:
c_compiler: ${{ fromJson(needs.get-matrix.outputs.compilers_macos) }}
qt_version: ${{ fromJson(needs.get-matrix.outputs.qt_versions) }}
include:
- c_compiler: gcc
cpp_compiler: g++
- c_compiler: clang
cpp_compiler: clang++

uses: ./.github/workflows/build-shared.yml
with:
os: macos-13 # Intel-based macOS
c_compiler: ${{ matrix.c_compiler }}
cpp_compiler: ${{ matrix.cpp_compiler }}
qt_version: ${{ matrix.qt_version }}

build-macos-arm:
name: macos-${{ matrix.c_compiler }}-qt${{ matrix.qt_version }}-arm
needs: get-matrix
strategy:
fail-fast: false
matrix:
c_compiler: ${{ fromJson(needs.get-matrix.outputs.compilers_macos) }}
qt_version: ${{ fromJson(needs.get-matrix.outputs.qt_versions) }}
include:
- c_compiler: gcc
cpp_compiler: g++
- c_compiler: clang
cpp_compiler: clang++
exclude:
# Exclude Qt5 versions for ARM builds
- qt_version: "5.9.*"
- qt_version: "5.12.*"
- qt_version: "5.15.*"

uses: ./.github/workflows/build-shared.yml
with:
os: macos-latest # Apple Silicon macOS
c_compiler: ${{ matrix.c_compiler }}
cpp_compiler: ${{ matrix.cpp_compiler }}
qt_version: ${{ matrix.qt_version }}
28 changes: 28 additions & 0 deletions .github/workflows/matrix-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Matrix Configuration

on:
workflow_call:
outputs:
qt_versions:
description: "Qt versions to test against (Usually LTS versions)"
# lowest LTS version that we can get through aqt is 5.9, so we start from there
# that's the reason why "5.6.*" is not included
value: '["5.9.*", "5.12.*", "5.15.*", "6.2.*", "6.5.*", "6.8.*"]'
compilers_linux:
description: "Compilers for Linux"
value: '["gcc", "clang"]'
compilers_windows:
description: "Compilers for Windows"
value: '["cl", "gcc", "clang"]'
compilers_macos:
description: "Compilers for macOS"
value: '["gcc", "clang"]'

jobs:
# This job exists only to make the workflow valid
# The outputs are defined statically above
placeholder:
runs-on: ubuntu-latest
steps:
- name: Configuration ready
run: echo "Matrix configuration is ready"
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,19 @@ name: CMake on multiple platforms

on:
push:
branches: [ "main" ]
branches: [ "main", "develop" ]
pull_request:
branches: [ "main" ]
branches: [ "main", "develop" ]
workflow_dispatch:
inputs:
environment:
description: "Select environment"
required: true
type: choice
options:
- linux
- windows
- macos

jobs:
build:
Expand All @@ -23,24 +33,38 @@ jobs:
#
# To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list.
matrix:
os: [ubuntu-latest, windows-latest]
os: [ubuntu-latest, windows-latest, macos-latest]
build_type: [Release]
c_compiler: [gcc, clang, cl]
include:
# windows
- os: windows-latest
c_compiler: cl
cpp_compiler: cl
- os: windows-latest
c_compiler: gcc
cpp_compiler: g++
- os: windows-latest
c_compiler: clang
cpp_compiler: clang++
# linux
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
- os: ubuntu-latest
c_compiler: clang
cpp_compiler: clang++
exclude:
- os: windows-latest
# macos
- os: macos-latest
c_compiler: gcc
- os: windows-latest
cpp_compiler: g++
- os: macos-latest
c_compiler: clang
cpp_compiler: clang++

exclude:
- os: macos-latest
c_compiler: cl
- os: ubuntu-latest
c_compiler: cl

Expand Down
35 changes: 35 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Windows Build

on:
workflow_dispatch:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]

jobs:
get-matrix:
uses: ./.github/workflows/matrix-config.yml

build-windows:
name: windows-${{ matrix.c_compiler }}-qt${{ matrix.qt_version }}
needs: get-matrix
strategy:
fail-fast: false
matrix:
qt_version: ${{ fromJson(needs.get-matrix.outputs.qt_versions) }}
c_compiler: ${{ fromJson(needs.get-matrix.outputs.compilers_windows) }}
include:
- c_compiler: cl
cpp_compiler: cl
- c_compiler: gcc
cpp_compiler: g++
- c_compiler: clang
cpp_compiler: clang++

uses: ./.github/workflows/build-shared.yml
with:
os: windows-latest
c_compiler: ${{ matrix.c_compiler }}
cpp_compiler: ${{ matrix.cpp_compiler }}
qt_version: ${{ matrix.qt_version }}
Loading
Loading