mirror of
https://github.com/GerbilSoft/rvthtool.git
synced 2025-06-18 11:35:33 -04:00
Improve Qt version detection.
- Set the default to "AUTO". - For "AUTO", check for Qt6 first, then Qt5. - Instead of linking to ${QT_NS}::WinMain, which doesn't exist on Qt6, just don't set QtX_NO_LINK_QTMAIN. (This works for Qt5, too.) - NOTE: Qt6 has QtEntryPoint instead.
This commit is contained in:
parent
7f7f903d02
commit
71c41db758
@ -42,8 +42,8 @@ IF(INSTALL_DEBUG AND NOT SPLIT_DEBUG)
|
||||
ENDIF(INSTALL_DEBUG AND NOT SPLIT_DEBUG)
|
||||
|
||||
# Qt version
|
||||
SET(QT_VERSION 5 CACHE STRING "Qt version to use. (default is 5)")
|
||||
SET_PROPERTY(CACHE QT_VERSION PROPERTY STRINGS 5 6)
|
||||
SET(QT_VERSION AUTO CACHE STRING "Qt version to use (default is 'AUTO' to auto-detect Qt6 or Qt5)")
|
||||
SET_PROPERTY(CACHE QT_VERSION PROPERTY STRINGS AUTO 6 5)
|
||||
|
||||
# Translations
|
||||
OPTION(ENABLE_NLS "Enable NLS using Qt's built-in localization system." ON)
|
||||
|
@ -2,40 +2,49 @@
|
||||
PROJECT(locale)
|
||||
|
||||
# rvthtool translations subproject.
|
||||
SET(FOUND_LinguistTools NO)
|
||||
|
||||
IF(QT_VERSION EQUAL 5)
|
||||
FIND_PACKAGE(Qt5 COMPONENTS Core LinguistTools)
|
||||
IF(Qt5_FOUND AND Qt5Core_FOUND AND Qt5LinguistTools_FOUND)
|
||||
# Found Qt5.
|
||||
ELSE()
|
||||
# Did not find Qt5.
|
||||
MESSAGE(WARNING "Qt5 not found. Not building localization files.")
|
||||
SET(ENABLE_NLS OFF)
|
||||
ENDIF()
|
||||
IF(QT_VERSION STREQUAL AUTO)
|
||||
SET(FIND_QT_QUIET QUIET)
|
||||
ENDIF(QT_VERSION STREQUAL AUTO)
|
||||
|
||||
# Qt 5.15/6 has qt_add_translation
|
||||
# We can't depend on having Qt 5.15, though.
|
||||
IF(NOT COMMAND QT_ADD_TRANSLATION)
|
||||
FUNCTION(QT_ADD_TRANSLATION _qm_files)
|
||||
QT5_ADD_TRANSLATION("${_qm_files}" ${ARGN})
|
||||
SET("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
|
||||
ENDFUNCTION(QT_ADD_TRANSLATION)
|
||||
ENDIF(NOT COMMAND QT_ADD_TRANSLATION)
|
||||
ELSEIF(QT_VERSION EQUAL 6)
|
||||
FIND_PACKAGE(Qt6 COMPONENTS Core LinguistTools)
|
||||
IF(QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 6)
|
||||
FIND_PACKAGE(Qt6 ${FIND_QT_QUIET} COMPONENTS Core LinguistTools)
|
||||
IF(Qt6_FOUND AND Qt6Core_FOUND AND Qt6LinguistTools_FOUND)
|
||||
# Found Qt6.
|
||||
ELSE()
|
||||
# Did not find Qt6.
|
||||
MESSAGE(WARNING "Qt6 not found. Not building localization files.")
|
||||
SET(ENABLE_NLS OFF)
|
||||
SET(FOUND_LinguistTools YES)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unsupported Qt version: ${QT_VERSION}")
|
||||
ENDIF()
|
||||
ENDIF(QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 6)
|
||||
|
||||
IF(NOT FOUND_LinguistTools AND (QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 5))
|
||||
FIND_PACKAGE(Qt5 ${FIND_QT_QUIET} COMPONENTS Core LinguistTools)
|
||||
IF(Qt5_FOUND AND Qt5Core_FOUND AND Qt5LinguistTools_FOUND)
|
||||
# Found Qt5.
|
||||
SET(FOUND_LinguistTools YES)
|
||||
ENDIF()
|
||||
ENDIF(NOT FOUND_LinguistTools AND (QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 5))
|
||||
|
||||
IF(NOT FOUND_LinguistTools)
|
||||
IF(QT_VERSION STREQUAL AUTO)
|
||||
MESSAGE(WARNING "A supported version of Qt (5, 6) was not found.\nNot building localizations.")
|
||||
ELSE()
|
||||
# TODO: FATAL_ERROR because a Qt version was explicitly specified?
|
||||
MESSAGE(WARNING "Qt${QT_VERSION} was not found.\nNot building localizations")
|
||||
ENDIF()
|
||||
SET(ENABLE_NLS OFF)
|
||||
ENDIF(NOT FOUND_LinguistTools)
|
||||
|
||||
IF(ENABLE_NLS)
|
||||
|
||||
# Qt 5.15/6 has qt_add_translation
|
||||
# We can't depend on having Qt 5.15, though.
|
||||
IF(NOT COMMAND QT_ADD_TRANSLATION)
|
||||
FUNCTION(QT_ADD_TRANSLATION _qm_files)
|
||||
QT5_ADD_TRANSLATION("${_qm_files}" ${ARGN})
|
||||
SET("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
|
||||
ENDFUNCTION(QT_ADD_TRANSLATION)
|
||||
ENDIF(NOT COMMAND QT_ADD_TRANSLATION)
|
||||
|
||||
# Compile the translations.
|
||||
SET(TRANSLATION_FILES
|
||||
rvthtool_de.ts
|
||||
|
@ -4,12 +4,36 @@ PROJECT(qrvthtool LANGUAGES CXX)
|
||||
# Main binary directory. Needed for git_version.h
|
||||
INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}")
|
||||
|
||||
IF(QT_VERSION EQUAL 5)
|
||||
IF(QT_VERSION STREQUAL AUTO)
|
||||
SET(FIND_QT_QUIET QUIET)
|
||||
ENDIF(QT_VERSION STREQUAL AUTO)
|
||||
|
||||
IF(QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 6)
|
||||
# Find Qt6.
|
||||
FIND_PACKAGE(Qt6 6.0.0 ${FIND_QT_QUIET} COMPONENTS Core Gui Widgets)
|
||||
IF(Qt6_FOUND AND Qt6Core_FOUND AND Qt6Gui_FOUND AND Qt6Widgets_FOUND)
|
||||
# Found Qt6.
|
||||
SET(BUILD_QT ON)
|
||||
SET(OUR_QT_VERSION 6)
|
||||
SET(QT_NS Qt6)
|
||||
SET(KF_NS KF6)
|
||||
IF(ENABLE_DBUS)
|
||||
# QtDBus is used for DockManager.
|
||||
FIND_PACKAGE(Qt6DBus)
|
||||
SET(HAVE_QtDBus ${Qt6DBus_FOUND})
|
||||
ENDIF(ENABLE_DBUS)
|
||||
ENDIF()
|
||||
|
||||
# Minimum ECM version for KF6.
|
||||
SET(KF_MIN 5.248.0)
|
||||
SET(ECM_MINIMUM_VERSION ${KF_MIN})
|
||||
ENDIF(QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 6)
|
||||
|
||||
IF(NOT BUILD_QT AND (QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 5))
|
||||
# Find Qt5.
|
||||
# FIXME: Figure out a minimum Qt5 version.
|
||||
# QtWin::fromHICON was added in Qt 5.2.
|
||||
SET(Qt5_NO_LINK_QTMAIN 1)
|
||||
FIND_PACKAGE(Qt5 5.2.0 COMPONENTS Core Gui Widgets)
|
||||
FIND_PACKAGE(Qt5 5.2.0 ${FIND_QT_QUIET} COMPONENTS Core Gui Widgets)
|
||||
IF(Qt5_FOUND AND Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND)
|
||||
# Found Qt5.
|
||||
SET(BUILD_QT ON)
|
||||
@ -20,9 +44,6 @@ IF(QT_VERSION EQUAL 5)
|
||||
FIND_PACKAGE(Qt5DBus)
|
||||
SET(HAVE_QtDBus ${Qt5DBus_FOUND})
|
||||
ENDIF(ENABLE_DBUS)
|
||||
ELSE()
|
||||
# Did not find Qt5.
|
||||
MESSAGE(WARNING "Qt5 not found. Not building qrvthtool.")
|
||||
ENDIF()
|
||||
|
||||
# Qt 5.15/6 has qt_wrap_cpp.
|
||||
@ -49,31 +70,16 @@ IF(QT_VERSION EQUAL 5)
|
||||
# Minimum ECM version for KF5.
|
||||
UNSET(KF_MIN)
|
||||
SET(ECM_MINIMUM_VERSION 0.0.11)
|
||||
ELSEIF(QT_VERSION EQUAL 6)
|
||||
# Find Qt6.
|
||||
SET(Qt6_NO_LINK_QTMAIN 1)
|
||||
FIND_PACKAGE(Qt6 6.0.0 COMPONENTS Core Gui Widgets)
|
||||
IF(Qt6_FOUND AND Qt6Core_FOUND AND Qt6Gui_FOUND AND Qt6Widgets_FOUND)
|
||||
# Found Qt6.
|
||||
SET(BUILD_QT ON)
|
||||
SET(QT_NS Qt6)
|
||||
SET(KF_NS KF6)
|
||||
IF(ENABLE_DBUS)
|
||||
# QtDBus is used for DockManager.
|
||||
FIND_PACKAGE(Qt6DBus)
|
||||
SET(HAVE_QtDBus ${Qt6DBus_FOUND})
|
||||
ENDIF(ENABLE_DBUS)
|
||||
ELSE()
|
||||
# Did not find Qt6.
|
||||
MESSAGE(WARNING "Qt6 not found. Not building qrvthtool.")
|
||||
ENDIF()
|
||||
ENDIF(NOT BUILD_QT AND (QT_VERSION STREQUAL AUTO OR QT_VERSION EQUAL 5))
|
||||
|
||||
# Minimum ECM version for KF6.
|
||||
SET(KF_MIN 5.248.0)
|
||||
SET(ECM_MINIMUM_VERSION ${KF_MIN})
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unsupported Qt version: ${QT_VERSION}")
|
||||
ENDIF()
|
||||
IF(NOT BUILD_QT)
|
||||
IF(QT_VERSION STREQUAL AUTO)
|
||||
MESSAGE(WARNING "A supported version of Qt (5, 6) was not found.\nNot building qrvthtool.")
|
||||
ELSE()
|
||||
# TODO: FATAL_ERROR because a Qt version was explicitly specified?
|
||||
MESSAGE(WARNING "Qt${QT_VERSION} was not found.\nNot building qrvthtool.")
|
||||
ENDIF()
|
||||
ENDIF(NOT BUILD_QT)
|
||||
|
||||
IF(BUILD_QT)
|
||||
|
||||
@ -301,10 +307,6 @@ TARGET_LINK_LIBRARIES(qrvthtool PRIVATE ${QT_NS}::Widgets ${QT_NS}::Gui ${QT_NS}
|
||||
IF(ENABLE_DBUS AND HAVE_QtDBus)
|
||||
TARGET_LINK_LIBRARIES(qrvthtool PRIVATE ${QT_NS}::DBus)
|
||||
ENDIF(ENABLE_DBUS AND HAVE_QtDBus)
|
||||
# FIXME: Not available on Qt6; not needed on Qt5 either?
|
||||
IF(WIN32 AND QT_VERSION EQUAL 5)
|
||||
TARGET_LINK_LIBRARIES(qrvthtool PRIVATE ${QT_NS}::WinMain)
|
||||
ENDIF(WIN32 AND QT_VERSION EQUAL 5)
|
||||
|
||||
IF(CMAKE_THREAD_LIBS_INIT)
|
||||
TARGET_LINK_LIBRARIES(qrvthtool PRIVATE ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
Loading…
Reference in New Issue
Block a user