Skip to content

build: migrate to Qt 6.8 LTS, CMake, and C++17#26

Merged
yani- merged 7 commits intomasterfrom
feat/qt6-cmake-modernization
Mar 29, 2026
Merged

build: migrate to Qt 6.8 LTS, CMake, and C++17#26
yani- merged 7 commits intomasterfrom
feat/qt6-cmake-modernization

Conversation

@yani-
Copy link
Copy Markdown
Member

@yani- yani- commented Mar 29, 2026

Summary

  • Upgrade from Qt 5.15 (EOL) to Qt 6.8 LTS, qmake to CMake, C++11 to C++17
  • Replace two-runner macOS lipo matrix with single-runner CMAKE_OSX_ARCHITECTURES universal binary
  • All mechanical code fixes for Qt 6 narrowing warnings (qsizetype, QTimeZone::UTC)
  • All 3 CI platforms use install-qt-action with pinned Qt 6.8.0
  • Windows CI uses vcpkg CMake toolchain file and MSVC 2022
  • Drop clazy (Qt 5-only on Ubuntu 22.04, was warn-only)

What changed

Area Before After
Qt version 5.15 (EOL) 6.8 LTS (supported ~Mar 2028)
Build system qmake (.pro) CMake
C++ standard C++11 C++17
macOS minimum 10.13 11.0 (Big Sur)
macOS universal binary Two runners + lipo Single runner + CMAKE_OSX_ARCHITECTURES
Windows MSVC 2019 2022
Windows vcpkg integration ENV vars for qmake CMAKE_TOOLCHAIN_FILE
Qt-specific linting clazy (warn-only) Removed (Qt 5-only)

Files changed (16)

New: CMakeLists.txt, tests/CMakeLists.txt, Info.plist.in, icons/traktor.rc
Deleted: Qtraktor.pro, tests/tests.pro, Info.plist
Modified: ci.yml, release.yml, CLAUDE.md, release-please-config.json, 6 source files (mechanical fixes)

Test plan

  • All 97 tests pass locally on macOS with Qt 6.11 (Homebrew)
  • Zero compiler warnings
  • Zero clang-format violations
  • CI: Linux build + tests pass
  • CI: macOS build + tests pass
  • CI: Windows build + tests pass
  • PKG installer builds correctly (macOS CI artifact)
  • App bundle has Qt6 frameworks in Contents/Frameworks/

Replace qmake build system with CMake. Upgrade from Qt 5.15 (EOL) to
Qt 6.8 LTS and from C++11 to C++17. The codebase had zero deprecated
Qt 5 APIs, so app code changes are purely mechanical warning fixes.

Build system:
- CMakeLists.txt replaces Qtraktor.pro (root + tests subdirectory)
- Info.plist.in with CMake @var@ substitution replaces qmake ${VAR}
- icons/traktor.rc for Windows icon (qmake auto-generated this)
- CMAKE_OSX_DEPLOYMENT_TARGET=11.0 for macOS minimum version
- CMAKE_OSX_ARCHITECTURES=arm64;x86_64 for universal binary (replaces
  two-runner lipo matrix in release workflow)
- release-please extra-files config for CMakeLists.txt version sync

Mechanical code fixes (Qt 6 narrowing warnings):
- QByteArray::size() returns qsizetype in Qt 6 (cryptoutils.cpp,
  backupfile.h/cpp, setupdialog.cpp)
- zlib crc32() uInt cast (backupfile.h, backupfile.cpp)
- QDateTime::fromMSecsSinceEpoch uses QTimeZone::UTC (backupfile.h)
- Explicit #include <QAction> in mainwindow.cpp
- Remove dead openssl/aes.h and openssl/sha.h includes
- Suppress deprecated CoreServices warnings in dockprogress.mm

CI/release changes:
- All platforms use jurplel/install-qt-action with Qt 6.8.0
- Windows uses vcpkg CMake toolchain file and MSVC 2022
- vcpkg cache key updated for MSVC 2022
- Drop clazy (Qt 5-only on Ubuntu 22.04)
- All artifact paths updated for CMake build/ directory
- macOS release uses single-runner universal binary build
@github-actions github-actions bot added test Test suite changes crypto Encryption/decryption parser Backup file parsing build Build system/project files ci CI/CD workflows ui User interface assets Icons and resources docs Documentation labels Mar 29, 2026
yani- added 3 commits March 29, 2026 10:01
Test binary is at build\tests\tst_qtraktor.exe (add_subdirectory),
not build\tst_qtraktor.exe.
Qt 6 macdeployqt bundles QtQml, QtQuick, and related frameworks via
plugin dependency chains even for pure Widgets apps. Traktor uses zero
QML. Pass -no-quick-import and remove leftover QML frameworks to bring
the PKG size back in line with the Qt 5 build.
Remove ~4.8MB of unnecessary Qt 6 dependencies from the app bundle:
- QtDBus (Linux IPC, unused on macOS)
- QtSvg + SVG icon engine (no SVG in the app)
- QML/Quick frameworks (pure Widgets app)
- GIF and ICO image format plugins (unused)
- TLS plugins (app makes zero network requests)
- Network reachability plugin (unused)

This brings the PKG size back in line with the Qt 5 build.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 29, 2026

Build Artifacts

Platform Download
Linux (x86_64) Traktor-linux-x86_64
macOS (Apple Silicon) Traktor-macOS
Windows (x64) Traktor-windows-x64

Built from 3502f32. Artifacts expire after 90 days.

@yani- yani- merged commit fa019f3 into master Mar 29, 2026
7 checks passed
@yani- yani- deleted the feat/qt6-cmake-modernization branch March 29, 2026 03:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

assets Icons and resources build Build system/project files ci CI/CD workflows crypto Encryption/decryption docs Documentation parser Backup file parsing test Test suite changes ui User interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant