diff --git a/CMakeLists.txt b/CMakeLists.txt index 00871c7..ed265a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_ # Build a shared library by default option(BUILD_SHARED_LIBS "Build QHttpEngine as a shared library" ON) +option(BUILD_AGAINST_QT6 "Build against Qt6" OFF) set(BIN_INSTALL_DIR bin CACHE STRING "Binary runtime installation directory relative to the install prefix") set(LIB_INSTALL_DIR lib CACHE STRING "Library installation directory relative to the install prefix") @@ -21,8 +22,14 @@ set(INCLUDE_INSTALL_DIR include CACHE STRING "Header installation directory rela set(DOC_INSTALL_DIR share/doc/qhttpengine CACHE STRING "Documentation installation directory relative to the install prefix") set(EXAMPLES_INSTALL_DIR "${LIB_INSTALL_DIR}/qhttpengine/examples" CACHE STRING "Examples installation directory relative to the install prefix") -find_package(Qt5Network 5.4 REQUIRED) +if(BUILD_AGAINST_QT6) + find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Core5Compat Network REQUIRED) + find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Core5Compat Network REQUIRED) +else() + find_package(QT NAMES Qt5 COMPONENTS Core Network REQUIRED) + find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Network REQUIRED) +endif() set(CMAKE_AUTOMOC ON) add_subdirectory(src) @@ -38,22 +45,22 @@ if(BUILD_EXAMPLES) add_subdirectory(examples) endif() -option(BUILD_TESTS "Build the test suite" OFF) -if(BUILD_TESTS) - find_package(Qt5Test 5.4 REQUIRED) - enable_testing() - add_subdirectory(tests) -endif() +#option(BUILD_TESTS "Build the test suite" OFF) +#if(BUILD_TESTS) +# find_package(Qt${QT_VERSION_MAJOR}Test REQUIRED) +# enable_testing() +# add_subdirectory(tests) +#endif() -set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}") -set(CPACK_PACKAGE_VENDOR "${PROJECT_AUTHOR}") -set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) -set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) -set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +#set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}") +#set(CPACK_PACKAGE_VENDOR "${PROJECT_AUTHOR}") +#set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +#set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +#set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) -set(CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "Documentation") -set(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "Documentation generated for the library") -set(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Examples") -set(CPACK_COMPONENT_EXAMPLES_DESCRIPTION "Sample applications using the library") +#set(CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "Documentation") +#set(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "Documentation generated for the library") +#set(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Examples") +#set(CPACK_COMPONENT_EXAMPLES_DESCRIPTION "Sample applications using the library") -include(CPack) +#include(CPack) diff --git a/examples/chatserver/CMakeLists.txt b/examples/chatserver/CMakeLists.txt index a2858a9..f641902 100644 --- a/examples/chatserver/CMakeLists.txt +++ b/examples/chatserver/CMakeLists.txt @@ -3,7 +3,7 @@ set(SRC main.cpp ) -qt5_add_resources(QRC resources.qrc) +qt_add_resources(QRC resources.qrc) add_executable(chatserver ${SRC} ${QRC}) target_link_libraries(chatserver qhttpengine) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2f6cef8..dca9e77 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -57,7 +57,11 @@ target_include_directories(qhttpengine PUBLIC "$" ) -target_link_libraries(qhttpengine Qt5::Network) +if(BUILD_AGAINST_QT6) + target_link_libraries(qhttpengine Qt${QT_VERSION_MAJOR}::Network Qt6::Core5Compat) +else() + target_link_libraries(qhttpengine Qt${QT_VERSION_MAJOR}::Network) +endif() install(TARGETS qhttpengine EXPORT qhttpengine-export RUNTIME DESTINATION "${BIN_INSTALL_DIR}" diff --git a/src/include/qhttpengine/qobjecthandler.h b/src/include/qhttpengine/qobjecthandler.h index dfbc478..851a8e4 100644 --- a/src/include/qhttpengine/qobjecthandler.h +++ b/src/include/qhttpengine/qobjecthandler.h @@ -137,19 +137,19 @@ public: } template - inline typename QtPrivate::QEnableIf::value, void>::Type + inline typename std::enable_if::value, void>::type registerMethod(const QString &name, Func1 slot, bool readAll = true) { registerMethod(name, Q_NULLPTR, slot, readAll); } template - inline typename QtPrivate::QEnableIf::IsPointerToMemberFunction && + inline typename std::enable_if::IsPointerToMemberFunction && #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) !std::is_same::value, #else !QtPrivate::is_same::value, #endif - void>::Type + void>::type registerMethod(const QString &name, QObject *context, Func1 slot, bool readAll = true) { // There is an easier way to do this but then the header wouldn't @@ -158,6 +158,7 @@ public: } #endif + protected: /** diff --git a/src/src/proxysocket.cpp b/src/src/proxysocket.cpp index cbcde7c..aec6939 100644 --- a/src/src/proxysocket.cpp +++ b/src/src/proxysocket.cpp @@ -38,13 +38,12 @@ ProxySocket::ProxySocket(Socket *socket, const QString &path, const QHostAddress connect(&mUpstreamSocket, &QTcpSocket::connected, this, &ProxySocket::onUpstreamConnected); connect(&mUpstreamSocket, &QTcpSocket::readyRead, this, &ProxySocket::onUpstreamReadyRead); - connect( - &mUpstreamSocket, - static_cast(&QAbstractSocket::error), - this, - &ProxySocket::onUpstreamError - ); - +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + connect(&mUpstreamSocket, &QAbstractSocket::error,this, &ProxySocket::onUpstreamError); +#else + connect(&mUpstreamSocket, static_cast(&QAbstractSocket::error), + this, &ProxySocket::onUpstreamError); +#endif mUpstreamSocket.connectToHost(address, port); } @@ -135,7 +134,7 @@ void ProxySocket::onUpstreamReadyRead() } } -void ProxySocket::onUpstreamError(QAbstractSocket::SocketError socketError) +void ProxySocket::onUpstreamError() { if (mHeadersParsed) { mDownstreamSocket->close(); diff --git a/src/src/proxysocket.h b/src/src/proxysocket.h index b9977a6..8edabd2 100644 --- a/src/src/proxysocket.h +++ b/src/src/proxysocket.h @@ -51,7 +51,7 @@ private Q_SLOTS: void onUpstreamConnected(); void onUpstreamReadyRead(); - void onUpstreamError(QTcpSocket::SocketError socketError); + void onUpstreamError(); private: diff --git a/src/src/server.cpp b/src/src/server.cpp index e27593e..f1a4959 100644 --- a/src/src/server.cpp +++ b/src/src/server.cpp @@ -91,8 +91,12 @@ void Server::incomingConnection(qintptr socketDescriptor) }); // If an error occurs, delete the socket - connect(socket, static_cast(&QAbstractSocket::error), - socket, &QSslSocket::deleteLater); + #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + connect(socket, &QAbstractSocket::error, socket, &QSslSocket::deleteLater); + #else + connect(socket, static_cast(&QAbstractSocket::error), + socket, &QSslSocket::deleteLater); + #endif socket->setSocketDescriptor(socketDescriptor); socket->setSslConfiguration(d->configuration);