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 "Qt for Mingw" FORCE) diff --git a/development/cmake/ConfigureChecks.cmake b/development/cmake/ConfigureChecks.cmake index 616bec0a10..29ad935c65 100644 --- a/development/cmake/ConfigureChecks.cmake +++ b/development/cmake/ConfigureChecks.cmake @@ -275,15 +275,20 @@ else() endif() endif() set(QPA_XCB) set(HAVE_QT5_X11_EXTRAS) -if(LYX_USE_QT MATCHES "QT5") - +set(HAVE_QT6_X11_EXTRAS) +if (LYX_USE_QT MATCHES "QT5|QT6") + if (LYX_USE_QT MATCHES "QT5") + set(QtVal Qt5) + else() + set(QtVal Qt6) + endif() set(CMAKE_REQUIRED_INCLUDES ${Qt5Core_INCLUDE_DIRS}) set(CMAKE_REQUIRED_FLAGS) - #message(STATUS "Qt5Core_INCLUDE_DIRS = ${Qt5Core_INCLUDE_DIRS}") + #message(STATUS "${QtVal}Core_INCLUDE_DIRS = ${${QtVal}Core_INCLUDE_DIRS}") check_include_file_cxx(QtGui/qtgui-config.h HAVE_QTGUI_CONFIG_H) if (HAVE_QTGUI_CONFIG_H) set(lyx_qt5_config "QtGui/qtgui-config.h") else() set(lyx_qt5_config "QtCore/qconfig.h") @@ -310,18 +315,18 @@ if(LYX_USE_QT MATCHES "QT5") if(QT_USES_X11) set(QPA_XCB ${QT_USES_X11}) endif() endif() - if (Qt5X11Extras_FOUND) - get_target_property(_x11extra_prop Qt5::X11Extras IMPORTED_CONFIGURATIONS) - get_target_property(_x11extra_link_libraries Qt5::X11Extras IMPORTED_LOCATION_${_x11extra_prop}) + if (${QtVal}X11Extras_FOUND) + get_target_property(_x11extra_prop ${QtVal}::X11Extras IMPORTED_CONFIGURATIONS) + get_target_property(_x11extra_link_libraries ${QtVal}::X11Extras IMPORTED_LOCATION_${_x11extra_prop}) set(CMAKE_REQUIRED_LIBRARIES ${_x11extra_link_libraries}) - set(CMAKE_REQUIRED_INCLUDES ${Qt5X11Extras_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_FLAGS "${Qt5X11Extras_EXECUTABLE_COMPILE_FLAGS} -fPIC -DQT_NO_VERSION_TAGGING") + set(CMAKE_REQUIRED_INCLUDES ${${QtVal}X11Extras_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_FLAGS "${${QtVal}X11Extras_EXECUTABLE_COMPILE_FLAGS} -fPIC -DQT_NO_VERSION_TAGGING") #message(STATUS "CMAKE_REQUIRED_LIBRARIES = ${_x11extra_link_libraries}") - #message(STATUS "CMAKE_REQUIRED_INCLUDES = ${Qt5X11Extras_INCLUDE_DIRS}") + #message(STATUS "CMAKE_REQUIRED_INCLUDES = ${${QtVal}X11Extras_INCLUDE_DIRS}") #message(STATUS "CMAKE_REQUIRED_FLAGS = ${CMAKE_REQUIRED_FLAGS}") check_cxx_source_compiles( " #include <QtX11Extras/QX11Info> int main() @@ -331,17 +336,17 @@ if(LYX_USE_QT MATCHES "QT5") " QT_HAS_X11_EXTRAS) set(HAVE_QT5_X11_EXTRAS ${QT_HAS_X11_EXTRAS}) set(LYX_QT5_X11_EXTRAS_LIBRARY ${_x11extra_link_libraries}) endif() - if (Qt5WinExtras_FOUND) - get_target_property(_winextra_prop Qt5::WinExtras IMPORTED_CONFIGURATIONS) + if (${QtVal}WinExtras_FOUND) + get_target_property(_winextra_prop ${QtVal}::WinExtras IMPORTED_CONFIGURATIONS) string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE) - get_target_property(_winextra_link_libraries Qt5::WinExtras IMPORTED_LOCATION_${BUILD_TYPE}) + get_target_property(_winextra_link_libraries ${QtVal}::WinExtras IMPORTED_LOCATION_${BUILD_TYPE}) set(CMAKE_REQUIRED_LIBRARIES ${_winextra_link_libraries}) - set(CMAKE_REQUIRED_INCLUDES ${Qt5WinExtras_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_FLAGS ${Qt5WinExtras_EXECUTABLE_COMPILE_FLAGS}) + set(CMAKE_REQUIRED_INCLUDES ${${QtVal}WinExtras_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_FLAGS ${${QtVal}WinExtras_EXECUTABLE_COMPILE_FLAGS}) endif() elseif(LYX_USE_QT MATCHES "QT4") set(CMAKE_REQUIRED_LIBRARIES ${QT_QTGUI_LIBRARY}) set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES}) check_cxx_source_compiles( diff --git a/development/cmake/LyxPackaging.cmake b/development/cmake/LyxPackaging.cmake index cfd1c5c8e2..6d308d06d9 100644 --- a/development/cmake/LyxPackaging.cmake +++ b/development/cmake/LyxPackaging.cmake @@ -152,11 +152,11 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME "${LYX_PROJECT}-${LYX_INSTALL_SUFFIX}") # We depend on python scripting # Currently no need to specify versions for pythonx since they are only # available in newest distributions. set(CPACK_DEBIAN_PACKAGE_DEPENDS "python (>= 2.7) | python3 | python2") -set(CPACK_DEBIAN_PACKAGE_SECTION "editors") +set(CPACK_DEBIAN_PACKAGE_SECTION "universe/editors") # use dpkg-shlibdeps to generate additional info for package dependency list. set(CPACK_DEBIAN_PACKAGE_RELEASE ${LYX_PACKAGE_RELEASE}) set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_DEBUG ON) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4fbe440a34..84373dac33 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -139,11 +139,12 @@ target_link_libraries(${_lyx} ${MYTHESLIB_LIBRARY} ${ICONV_LIBRARY} ${LYX_QTMAIN_LIBRARY} ${vld_dll}) -qt_use_modules(${_lyx} Core Gui) +qt_use_modules(${_lyx} Core Gui ${QtCore5CompatModule}) +target_link_libraries(${_lyx} ${QtCore5CompatLibrary}) if(QT_USES_X11) find_package(X11 REQUIRED) target_link_libraries(${_lyx} ${X11_X11_LIB}) # we need it because we use XSendEvent if(HAVE_QT5_X11_EXTRAS) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 95535e0a61..c64ada8ef4 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -24,12 +24,14 @@ add_executable(${_lyxclient} ${_lyxclient_sources} ${_lyxclient_headers}) target_link_libraries(${_lyxclient} support ${Lyx_Boost_Libraries} ${ICONV_LIBRARY} ${QT_QTCORE_LIBRARY} - ${QT_QTGUI_LIBRARY}) + ${QT_QTGUI_LIBRARY} + ${QtCore5CompatLibrary}) +qt_use_modules(${_lyxclient} ${QtCore5CompatModule}) lyx_target_link_libraries(${_lyxclient} Magic ASPELL) if(APPLE) target_link_libraries(${_lyxclient} "-framework AppKit") endif() diff --git a/src/support/tests/CMakeLists.txt b/src/support/tests/CMakeLists.txt index e5ef4fa6a8..4667077f71 100644 --- a/src/support/tests/CMakeLists.txt +++ b/src/support/tests/CMakeLists.txt @@ -12,17 +12,18 @@ macro(sources _program) list(APPEND _tmplist "${TOP_SRC_DIR}/src/support/tests/${_tmp}") endforeach() set(${_program}_SOURCES ${_tmplist}) add_executable(${_program} ${_tmplist}) target_link_libraries(${_program} support - ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} + ${Lyx_Boost_Libraries} + ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} ${QtCore5CompatLibrary} ${ZLIB_LIBRARY} ${ICONV_LIBRARY}) lyx_target_link_libraries(${_program} Magic) if(CYGWIN) target_link_libraries(${_program} shlwapi) endif() - qt_use_modules(${_program} Core) + qt_use_modules(${_program} Core ${QtCore5CompatModule}) set_property(TARGET ${_program} PROPERTY INTERPROCEDURAL_OPTIMIZATION FALSE) endmacro() file(GLOB test_sources ${TOP_SRC_DIR}/src/support/tests/${LYX_CPP_FILES}) diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 957e4c0cd7..0fe014f9c2 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -15,11 +15,11 @@ endforeach() include_directories(${TOP_SRC_DIR}/src/support/tests) add_executable(check_layout ${check_layout_SOURCES}) target_link_libraries(check_layout support - ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} + ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} ${QtCore5CompatLibrary} ${ZLIB_LIBRARY} ${ICONV_LIBRARY}) if(CYGWIN) target_link_libraries(check_layout shlwapi) endif() lyx_target_link_libraries(check_layout Magic) @@ -73,11 +73,11 @@ endforeach() include_directories(${TOP_SRC_DIR}/src/tests) add_executable(check_ExternalTransforms ${check_ExternalTransforms_SOURCES}) target_link_libraries(check_ExternalTransforms support - ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY}) + ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} ${QtCore5CompatLibrary}) lyx_target_link_libraries(check_ExternalTransforms Magic) add_dependencies(lyx_run_tests check_ExternalTransforms) set_target_properties(check_ExternalTransforms PROPERTIES FOLDER "tests/src") target_link_libraries(check_ExternalTransforms ${ICONV_LIBRARY}) @@ -94,11 +94,11 @@ foreach(_f tests/check_Length.cpp tests/boost.cpp tests/dummy_functions.cpp) list(APPEND check_Length_SOURCES ${TOP_SRC_DIR}/src/${_f}) endforeach() add_executable(check_Length ${check_Length_SOURCES}) target_link_libraries(check_Length support - ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY}) + ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} ${QtCore5CompatLibrary}) lyx_target_link_libraries(check_Length Magic) add_dependencies(lyx_run_tests check_Length) set_target_properties(check_Length PROPERTIES FOLDER "tests/src") target_link_libraries(check_Length ${ICONV_LIBRARY}) @@ -116,11 +116,11 @@ foreach(_f tests/check_ListingsCaption.cpp tests/boost.cpp tests/dummy_functions list(APPEND check_ListingsCaption_SOURCES ${TOP_SRC_DIR}/src/${_f}) endforeach() add_executable(check_ListingsCaption ${check_ListingsCaption_SOURCES}) target_link_libraries(check_ListingsCaption support - ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY}) + ${Lyx_Boost_Libraries} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} ${QtCore5CompatLibrary}) lyx_target_link_libraries(check_ListingsCaption Magic) add_dependencies(lyx_run_tests check_ListingsCaption) set_target_properties(check_ListingsCaption PROPERTIES FOLDER "tests/src") target_link_libraries(check_ListingsCaption ${ICONV_LIBRARY}) diff --git a/src/tex2lyx/CMakeLists.txt b/src/tex2lyx/CMakeLists.txt index 2a68e71150..f3bfc52603 100644 --- a/src/tex2lyx/CMakeLists.txt +++ b/src/tex2lyx/CMakeLists.txt @@ -46,12 +46,14 @@ set_target_properties(${_tex2lyx} PROPERTIES target_link_libraries(${_tex2lyx} support ${Lyx_Boost_Libraries} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} + ${QtCore5CompatLibrary} ${ICONV_LIBRARY}) +qt_use_modules(${_tex2lyx} ${QtCore5CompatModule}) lyx_target_link_libraries(${_tex2lyx} Magic) add_dependencies(${_tex2lyx} lyx_version) if(WIN32)
pgp4vn77FaW0Q.pgp
Description: Digitale Signatur von OpenPGP
-- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel