With the help from Scott, we have now cmake files for this task.
Since nothing changes for non-qt6 I am going to commit.
The most disturbing thing was the need for Core5Compat.
Attached the complete patch.
Kornel
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f8ca0c10fd..12dd3947be 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -217,11 +217,11 @@ else()
unset(LYX_ENABLE_VALGRIND_TESTS CACHE)
endif()
endif()
LYX_OPTION(ASAN "Use address sanitizer" OFF ALL)
#LYX_COMBO(USE_FILEDIALOG"Use native or QT file dialog" QT NATIVE)
-LYX_COMBO(USE_QT"Use Qt version as frontend" AUTO QT4 QT5)
+LYX_COMBO(USE_QT"Use Qt version as frontend" AUTO QT4 QT5 QT6)
LYX_COMBO(USE_IPO "Interprocedural optimization" OFF AUTO ON)
#LYX_OPTION(3RDPARTY_BUILD "Build 3rdparty libs" OFF ALL)
LYX_OPTION(DISABLE_CALLSTACK_PRINTING "do not print a callstack when crashing" OFF ALL)
LYX_OPTION(EXTERNAL_Z "OFF := Build 3rdparty lib zlib" ${DefaultExternalLibs} ALL)
LYX_OPTION(EXTERNAL_DTL "OFF := Build 3rdparty commands dt2dv and dv2dt" ${DefaultExternalLibs} ALL)
@@ -741,36 +741,62 @@ if(LYX_XMINGW)
list(APPEND CMAKE_FIND_ROOT_PATH ${GNUWIN32_DIR})
endif()
set(min_qt5_version "5.6")
if(LYX_USE_QT MATCHES "AUTO")
- # try qt5 first
- find_package(Qt5Core CONFIG QUIET)
- if(Qt5Core_FOUND)
- set(LYX_USE_QT "QT5" CACHE STRING "Valid qt version" FORCE)
+ # try qt6 first
+ find_package(Qt6Core CONFIG QUIET)
+ if (Qt6Core_Found)
+ set(LYX_USE_QT "QT6" CACHE STRING "Valid qt version" FORCE)
message(STATUS "Qt5Core_VERSION = ${Qt5Core_VERSION}")
- if(Qt5Core_VERSION VERSION_LESS ${min_qt5_version})
- find_package(Qt4 "4.5.0" QUIET)
- if(QT4_FOUND)
-set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE)
- endif()
- endif()
else()
- set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE)
+ find_package(Qt5Core CONFIG QUIET)
+ if(Qt5Core_FOUND)
+ set(LYX_USE_QT "QT5" CACHE STRING "Valid qt version" FORCE)
+ message(STATUS "Qt5Core_VERSION = ${Qt5Core_VERSION}")
+ if(Qt5Core_VERSION VERSION_LESS ${min_qt5_version})
+find_package(Qt4 "4.5.0" QUIET)
+if(QT4_FOUND)
+ set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE)
+endif()
+ endif()
+ else()
+ set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE)
+ endif()
endif()
endif()
-if(LYX_USE_QT MATCHES "QT5")
+
+set(QtCore5CompatLibrary)
+set(QtCore5CompatModule)
+if(LYX_USE_QT MATCHES "QT6|QT5")
+ if (LYX_USE_QT MATCHES "QT6")
+ set(QtVal "Qt6")
+ macro (qt_add_resources)
+ Qt6_add_resources(${ARGN})
+ endmacro()
+ macro (qt_wrap_uifiles)
+ Qt6_wrap_ui(${ARGN})
+ endmacro()
+ else()
+ set(QtVal "Qt5")
+ macro (qt_add_resources)
+ Qt5_add_resources(${ARGN})
+ endmacro()
+ macro (qt_wrap_uifiles)
+ Qt5_wrap_ui(${ARGN})
+ endmacro()
+ endif()
# set QPA_XCB if QT uses X11
- find_package(Qt5Core CONFIG REQUIRED)
- if (Qt5Core_FOUND)
- find_package(Qt5Widgets CONFIG REQUIRED)
+ find_package(${QtVal}Core CONFIG REQUIRED)
+ if (${QtVal}Core_FOUND)
+ find_package(${QtVal}Widgets CONFIG REQUIRED)
if(APPLE)
- find_package(Qt5MacExtras CONFIG REQUIRED)
+ find_package(${QtVal}MacExtras CONFIG REQUIRED)
endif()
- find_package(Qt5X11Extras CONFIG QUIET)
- find_package(Qt5WinExtras CONFIG QUIET)
- set(QTVERSION ${Qt5Core_VERSION})
+ find_package(${QtVal}X11Extras CONFIG QUIET)
+ find_package(${QtVal}WinExtras CONFIG QUIET)
+ set(QTVERSION ${${QtVal}Core_VERSION})
if (QTVERSION VERSION_LESS ${min_qt5_version})
message(STATUS "QTVERSION = \"${QTVERSION}\"")
message(STATUS "This version is not recommended, try either option -DLYX_USE_QT=QT4 or")
message(STATUS "install QT-Version >= \"${min_qt5_version}\"")
# see thread in lyx-devel list
@@ -779,23 +805,24 @@ if(LYX_USE_QT MATCHES "QT5")
# Subject: cmake compilation error
#message(FATAL_ERROR "Wrong Qt-Version")
endif()
macro (qt_use_modules lyxtarget)
foreach (_tg ${ARGN})
-find_package(Qt5${_tg} CONFIG REQUIRED)
-target_link_libraries(${lyxtarget} Qt5::${_tg})
+find_package(${QtVal}${_tg} CONFIG REQUIRED)
+target_link_libraries(${lyxtarget} ${QtVal}::${_tg})
endforeach()
endmacro()
- macro (qt_add_resources)
- qt5_add_resources(${ARGN})
- endmacro()
- macro (qt_wrap_uifiles)
- qt5_wrap_ui(${ARGN})
- endmacro()
message(STATUS "Found Qt-Version ${QTVERSION}")
if(WIN32)
- set(LYX_QTMAIN_LIBRARY ${Qt5Core_QTMAIN_LIBRARIES})
+ set(LYX_QTMAIN_LIBRARY ${${QtVal}Core_QTMAIN_LIBRARIES})
+ endif()
+ if (LYX_USE_QT MATCHES "QT6")
+ get_target_property(QT_MOC_EXECUTABLE Qt6::moc LOCATION)
+ find_package(Qt6 COMPONENTS Core5Compat REQUIRED)
+ include_directories(${Qt6Core5Compat_INCLUDE_DIRS})
+ set(QtCore5CompatLibrary Qt6::Core5Compat)
+ set(QtCore5CompatModule Core5Compat)
endif()
endif()
elseif(LYX_USE_QT MATCHES "QT4")
if(LYX_XMINGW)
set(QT_MINGW_DIR ${LYX_QT4} CACHE PATH