diff options
-rw-r--r-- | CMakeLists.txt | 20 | ||||
-rw-r--r-- | singleapplication_p.cpp | 20 |
2 files changed, 27 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 85dba84..408fec2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,22 +10,26 @@ add_library(${PROJECT_NAME} STATIC ) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) +set(QT_MAJOR_VERSION 5 CACHE STRING "Qt version to use (5 or 6), defaults to 5") + # Find dependencies -find_package(Qt5 COMPONENTS Network REQUIRED) -target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Network) +set(QT_COMPONENTS Core Network) +set(QT_LIBRARIES Qt${QT_MAJOR_VERSION}::Core Qt${QT_MAJOR_VERSION}::Network) if(QAPPLICATION_CLASS STREQUAL QApplication) - find_package(Qt5 COMPONENTS Widgets REQUIRED) - target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Widgets) + list(APPEND QT_COMPONENTS Widgets) + list(APPEND QT_LIBRARIES Qt${QT_MAJOR_VERSION}::Widgets) elseif(QAPPLICATION_CLASS STREQUAL QGuiApplication) - find_package(Qt5 COMPONENTS Gui REQUIRED) - target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Gui) + list(APPEND QT_COMPONENTS Gui) + list(APPEND QT_LIBRARIES Qt${QT_MAJOR_VERSION}::Gui) else() set(QAPPLICATION_CLASS QCoreApplication) - find_package(Qt5 COMPONENTS Core REQUIRED) - target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Core) endif() +find_package(Qt${QT_MAJOR_VERSION} COMPONENTS ${QT_COMPONENTS} REQUIRED) + +target_link_libraries(${PROJECT_NAME} PUBLIC ${QT_LIBRARIES}) + if(WIN32) target_link_libraries(${PROJECT_NAME} PRIVATE advapi32) endif() diff --git a/singleapplication_p.cpp b/singleapplication_p.cpp index 3d1e408..65859c7 100644 --- a/singleapplication_p.cpp +++ b/singleapplication_p.cpp @@ -253,7 +253,11 @@ bool SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne writeStream << blockServerName.toLatin1(); writeStream << static_cast<quint8>(connectionType); writeStream << instanceNumber; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + quint16 checksum = qChecksum(QByteArray(initMsg, static_cast<quint32>(initMsg.length()))); +#else quint16 checksum = qChecksum(initMsg.constData(), static_cast<quint32>(initMsg.length())); +#endif writeStream << checksum; // The header indicates the message length that follows @@ -274,10 +278,12 @@ bool SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne quint16 SingleApplicationPrivate::blockChecksum() const { - return qChecksum( - static_cast <const char *>( memory->data() ), - offsetof( InstancesInfo, checksum ) - ); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + quint16 checksum = qChecksum(QByteArray(static_cast<const char*>(memory->constData()), offsetof(InstancesInfo, checksum))); +#else + quint16 checksum = qChecksum(static_cast<const char*>(memory->constData()), offsetof(InstancesInfo, checksum)); +#endif + return checksum; } qint64 SingleApplicationPrivate::primaryPid() const @@ -413,7 +419,11 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock ) quint16 msgChecksum = 0; readStream >> msgChecksum; - const quint16 actualChecksum = qChecksum( msgBytes.constData(), static_cast<quint32>( msgBytes.length() - sizeof( quint16 ) ) ); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const quint16 actualChecksum = qChecksum(QByteArray(msgBytes, static_cast<quint32>(msgBytes.length() - sizeof(quint16)))); +#else + const quint16 actualChecksum = qChecksum(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16))); +#endif bool isValid = readStream.status() == QDataStream::Ok && QLatin1String(latin1Name) == blockServerName && |