build: migrate to Qt 6.8 LTS, CMake, and C++17#26
Merged
Conversation
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
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.
Contributor
Build Artifacts
Built from 3502f32. Artifacts expire after 90 days. |
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CMAKE_OSX_ARCHITECTURESuniversal binaryinstall-qt-actionwith pinned Qt 6.8.0What changed
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