> Qt's solution for this is to introduce versionless CMake targets, e.g. > instead of Qt5::Core or Qt6::Core you write Qt::Core. That's only > available from Qt 5.15 though, that's why Frameworks does not make use > of that yet (since it supports 5.14 too).
I know and since it is only available in Qt 5.15 I've just added ``` set(QT_PACKAGE_PREFIX "Qt5" CACHE STRING "specifies the prefix for Qt packages") set(KF_PACKAGE_PREFIX "KF5" CACHE STRING "specifies the prefix for KDE Frameworks packages") ``` in my projects and use that all over the place. Not fancy but it does its job and the user can also easily select the version to build against (and hopefully doesn't select an unsupported one). For my own libraries and applications I simply allow setting a configuration name via a similar cache variable at the time it is built and consumed. Also not very fancy because it is yet another cache variable one has to use all over the place but it is still quite useful as it generally allows the installation and use of two differently configured versions of a library/ application. I'd also like to note that the versioning of my own libraries/applications is independent of the versioning of its dependencies, including Qt. This seems more natural to me compared to KDE's approach. And yes, it means the same version the library can be configured differently resulting in differently named binaries with different ABIs. However, it looks like other projects like poppler did it similarly. By the way, the "Required By" column of Arch Linux's qt6-base package shows a few more applications which have already been ported to Qt 6. The list is (slowly) growing: https://archlinux.org/packages/extra/x86_64/qt6-base
