diff --git a/CMakeLists.txt b/CMakeLists.txt
index 72cbc45..15b3ffe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,7 +25,7 @@ set(dbusmenu_qt_lib_PATCH_VERSION 0)
set(dbusmenu_qt_lib_VERSION ${dbusmenu_qt_lib_SOVERSION}.${dbusmenu_qt_lib_API_VERSION}.${dbusmenu_qt_lib_PATCH_VERSION})
# Check if we want to explicitly select the Qt version to be used or autodetect
-if (NOT USE_QT4 AND NOT USE_QT5)
+if (NOT USE_QT4 AND NOT USE_QT5 AND NOT USE_QT6)
# Autodetect, prefering Qt5
message(STATUS "Autodetecting Qt version to use")
find_package(Qt5Widgets QUIET)
@@ -35,7 +35,15 @@ if (NOT USE_QT4 AND NOT USE_QT5)
endif()
# Detect for which Qt version we're building
-if (USE_QT5)
+if (USE_QT6)
+ find_package(Qt6 REQUIRED COMPONENTS Core Widgets DBus)
+ include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
+ set(CMAKE_AUTOMOC ON)
+ set(CMAKE_AUTOMOC_RELAXED_MODE ON)
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+ set(QT_SUFFIX "qt6")
+elseif (USE_QT5)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5DBus REQUIRED)
include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
@@ -69,9 +77,9 @@ if (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual")
endif (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
-check_cxx_compiler_flag(-std=c++11 __DBUSMENU_HAVE_CXX11)
+check_cxx_compiler_flag(-std=c++17 __DBUSMENU_HAVE_CXX11)
if (__DBUSMENU_HAVE_CXX11)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
endif (__DBUSMENU_HAVE_CXX11)
include(CMakePackageConfigHelpers)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2c4a4e8..e99d24a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -21,20 +21,23 @@ if (__DBUSMENU_HAVE_W_ALL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif (__DBUSMENU_HAVE_W_ALL)
-check_cxx_compiler_flag(-std=c++11 __DBUSMENU_HAVE_CXX11)
+check_cxx_compiler_flag(-std=c++17 __DBUSMENU_HAVE_CXX11)
if (__DBUSMENU_HAVE_CXX11)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
endif (__DBUSMENU_HAVE_CXX11)
# Check whether QIcon::name() exists. It was added in late Qt 4.7 cycle, and is
# not present in betas.
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
set(CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}")
set(CMAKE_REQUIRED_LIBRARIES "${QT_QTGUI_LIBRARIES};${QT_QTCORE_LIBRARIES}")
-else()
+elseif(USE_QT5)
set(CMAKE_REQUIRED_INCLUDES "${Qt5Gui_INCLUDE_DIRS};${Qt5Core_INCLUDE_DIRS}")
set(CMAKE_REQUIRED_LIBRARIES "${Qt5Gui_LIBRARIES};${Qt5Core_LIBRARIES}")
+else()
+ set(CMAKE_REQUIRED_INCLUDES "${Qt6Gui_INCLUDE_DIRS};${Qt6Core_INCLUDE_DIRS}")
+ set(CMAKE_REQUIRED_LIBRARIES "${Qt6Gui_LIBRARIES};${Qt6Core_LIBRARIES}")
endif()
check_cxx_source_compiles("
#include <QtGui/QIcon>
@@ -64,17 +67,22 @@ include_directories(
${CMAKE_BINARY_DIR}/src
)
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
qt4_automoc(${dbusmenu_qt_SRCS})
qt4_add_dbus_adaptor(dbusmenu_qt_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.dbusmenu.xml
${CMAKE_CURRENT_SOURCE_DIR}/dbusmenuexporterdbus_p.h DBusMenuExporterDBus
)
-else()
+elseif(USE_QT5)
qt5_add_dbus_adaptor(dbusmenu_qt_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.dbusmenu.xml
${CMAKE_CURRENT_SOURCE_DIR}/dbusmenuexporterdbus_p.h DBusMenuExporterDBus
)
+else()
+ qt6_add_dbus_adaptor(dbusmenu_qt_SRCS
+ ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.dbusmenu.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/dbusmenuexporterdbus_p.h DBusMenuExporterDBus
+ )
endif()
configure_file(dbusmenu_version.h.in
@@ -88,7 +96,7 @@ set_target_properties(dbusmenu-${QT_SUFFIX} PROPERTIES
)
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
target_link_libraries(dbusmenu-${QT_SUFFIX}
${QT_QTGUI_LIBRARIES}
${QT_QTDBUS_LIBRARIES}
@@ -96,10 +104,10 @@ if (NOT USE_QT5)
)
else()
target_link_libraries(dbusmenu-${QT_SUFFIX}
- ${Qt5Gui_LIBRARIES}
- ${Qt5Core_LIBRARIES}
- ${Qt5DBus_LIBRARIES}
- ${Qt5Widgets_LIBRARIES}
+ Qt::Gui
+ Qt::Core
+ Qt::DBus
+ Qt::Widgets
)
endif()
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 6be27f5..4f21cb7 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,9 +1,9 @@
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
qt4_automoc(slowmenu.cpp)
endif()
add_executable(slowmenu slowmenu.cpp)
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
target_link_libraries(slowmenu
${QT_QTGUI_LIBRARIES}
${QT_QTDBUS_LIBRARIES}
@@ -26,7 +26,7 @@ if (NOT USE_QT5)
${QT_QTTEST_INCLUDE_DIR}
${QT_QTDBUS_INCLUDE_DIR}
)
-else()
+elseif(USE_QT5)
find_package(Qt5Test REQUIRED)
target_link_libraries(slowmenu
@@ -51,6 +51,31 @@ else()
${Qt5Test_INCLUDE_DIRS}
${Qt5DBus_INCLUDE_DIRS}
)
+else()
+ find_package(Qt6Test REQUIRED)
+
+ target_link_libraries(slowmenu
+ ${Qt6Gui_LIBRARIES}
+ ${Qt6Core_LIBRARIES}
+ ${Qt6DBus_LIBRARIES}
+ dbusmenu-qt6
+ )
+
+ set(test_LIBRARIES
+ ${Qt6Gui_LIBRARIES}
+ ${Qt6Core_LIBRARIES}
+ ${Qt6DBus_LIBRARIES}
+ ${Qt6Test_LIBRARIES}
+ dbusmenu-qt6
+ )
+
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}/../src
+ ${CMAKE_CURRENT_BINARY_DIR}/../src
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${Qt6Test_INCLUDE_DIRS}
+ ${Qt6DBus_INCLUDE_DIRS}
+ )
endif()
# Macros to create "check" target
@@ -77,7 +102,7 @@ set(dbusmenuexportertest_SRCS
testutils.cpp
)
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
qt4_automoc(${dbusmenuexportertest_SRCS})
endif()
@@ -94,7 +119,7 @@ set(dbusmenuimportertest_SRCS
testutils.cpp
)
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
qt4_automoc(${dbusmenuimportertest_SRCS})
endif()
@@ -110,7 +135,7 @@ set(dbusmenushortcuttest_SRCS
dbusmenushortcuttest.cpp
)
-if (NOT USE_QT5)
+if (NOT USE_QT5 AND NOT USE_QT6)
qt4_automoc(${dbusmenushortcuttest_SRCS})
endif()