using qt versionless approach

This commit is contained in:
Rick Vogel 2022-12-20 14:01:57 +01:00
parent 3414b2b802
commit c194bbaedd
34 changed files with 95 additions and 78 deletions

View File

@ -10,29 +10,46 @@ set(CMAKE_CXX_EXTENSIONS OFF)
include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake)
# find either Qt5 or Qt6 requred and optional components
if(NOT "${Qt5_DIR}" STREQUAL "")
find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets)
find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore)
set(Qt Qt${Qt5_VERSION_MAJOR})
set(Qt_VERSION ${Qt5_VERSION})
set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR})
set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH})
elseif(NOT "${Qt6_DIR}" STREQUAL "")
string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR})
find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets)
find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) # check optional QuickWidgets Svg Widgets
set(Qt Qt${Qt6_VERSION_MAJOR})
set(Qt_VERSION ${Qt6_VERSION})
set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR})
set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR})
set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH})
find_package(Qt6 COMPONENTS Core QUIET)
if (NOT Qt6_FOUND)
find_package(Qt5 5.15 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets)
find_package(Qt5 5.15 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore)
message(WARNING "using QSkinny's 'qt_add_executable()'")
function(qt_add_executable)
add_executable(${ARGV})
endfunction(qt_add_executable)
message(WARNING "using QSkinny's 'qt_add_library()'")
function(qt_add_library)
add_library(${ARGV})
endfunction(qt_add_library)
else()
message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!")
find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets)
find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick)
endif()
# find either Qt5 or Qt6 requred and optional components
#if(NOT "${Qt5_DIR}" STREQUAL "")
# find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets)
# find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore)
# set(Qt Qt${Qt5_VERSION_MAJOR})
# set(Qt_VERSION ${Qt5_VERSION})
# set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
# set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR})
# set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH})
#elseif(NOT "${Qt6_DIR}" STREQUAL "")
# string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}")
# set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR})
# find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets)
# find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) # check optional QuickWidgets Svg Widgets
# set(Qt Qt${Qt6_VERSION_MAJOR})
# set(Qt_VERSION ${Qt6_VERSION})
# set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR})
# set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR})
# set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH})
#else()
# message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!")
#endif()
# optional package hunspell
if(NOT LINUX AND ENABLE_HUNSPELL)
message(WARNING "Feature 'hunspell' only available for UNIX!")

View File

@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME boxes)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME buttons)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES})
target_link_libraries(${TARGET_NAME}
PRIVATE

View File

@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME desktop)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -10,7 +10,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME frames)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
target_link_libraries(${TARGET_NAME}
PRIVATE

View File

@ -49,7 +49,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME gallery)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME glabels)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES})
target_link_libraries(${TARGET_NAME}
PRIVATE

View File

@ -69,7 +69,7 @@ list(APPEND TARGET_RESSOURCES
set(TARGET_NAME iotdashboard)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES}
${TARGET_HEADERS}
${TARGET_RESSOURCES})
@ -87,13 +87,13 @@ if(TARGET Qsk::qskinny)
target_link_libraries(${TARGET_NAME}
PRIVATE
Qsk::qskinny
${Qt}::Svg)
Qt::Svg)
else()
target_link_libraries(${TARGET_NAME}
PRIVATE
qskinny
qsktestsupport
${Qt}::Svg)
Qt::Svg)
target_compile_definitions(${TARGET_NAME}
PRIVATE

View File

@ -22,7 +22,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME layouts)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME listbox)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME messagebox)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME messageboxQml)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES})
target_link_libraries(${TARGET_NAME}
PRIVATE

View File

@ -11,7 +11,7 @@ list(APPEND TARGET_HEADERS
set(TARGET_NAME mycontrols)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -22,7 +22,7 @@ list(APPEND TARGET_QVGS
set(TARGET_NAME qvgviewer)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES}
${TARGET_HEADERS}
${TARGET_RESSOURCES}

View File

@ -11,7 +11,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME tabview)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME thumbnails)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -23,7 +23,7 @@ if(ENABLE_HUNSPELL)
${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp)
endif()
add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES})
qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES})
if(ENABLE_PINYIN)
target_link_libraries(${TARGET_NAME}
@ -47,7 +47,7 @@ endif()
target_link_libraries(${TARGET_NAME}
PRIVATE
qskinny
${Qt}::GuiPrivate)
Qt::GuiPrivate)
set_target_properties(${TARGET_NAME} PROPERTIES
AUTOMOC ON)

View File

@ -7,17 +7,17 @@ add_subdirectory(images)
add_subdirectory(shadows)
if (Qt_VERSION_MAJOR VERSION_EQUAL "6")
if(TARGET ${Qt}::WebEngineCore)
if(TARGET ${Qt}::WebEngineQuick)
if(TARGET Qt::WebEngineCore)
if(TARGET Qt::WebEngineQuick)
add_subdirectory(webview)
endif()
endif()
elseif(Qt_VERSION VERSION_EQUAL "5")
if(TARGET ${Qt}::WebEngine)
if(TARGET Qt::WebEngine)
add_subdirectory(webview)
endif()
endif()
if(TARGET ${Qt}::QuickWidgets)
if(TARGET Qt::QuickWidgets)
add_subdirectory(grids)
endif()

View File

@ -20,7 +20,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME anchors)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES}
${TARGET_HEADERS}
${TARGET_RESSOURCES})

View File

@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES
Window.cpp
main.cpp)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS})
target_link_libraries(${TARGET_NAME}
PRIVATE

View File

@ -16,7 +16,7 @@ list(APPEND TARGET_RESSOURCES
set(TARGET_NAME dials)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES}
${TARGET_HEADERS}
${TARGET_RESSOURCES})

View File

@ -18,7 +18,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME grid)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES}
${TARGET_HEADERS})
@ -26,7 +26,7 @@ target_link_libraries(${TARGET_NAME}
PRIVATE
qskinny
qsktestsupport
${Qt}::QuickWidgets)
Qt::QuickWidgets)
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -10,7 +10,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME images)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES}
${TARGET_HEADERS}
${TARGET_RESSOURCES})

View File

@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME inputpanel)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES})
target_link_libraries(${TARGET_NAME}

View File

@ -9,7 +9,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME invoker)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES}
${TARGET_HEADERS})

View File

@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME shadows)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_HEADERS}
${TARGET_SOURCES})

View File

@ -4,7 +4,7 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME webview)
add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE
${TARGET_SOURCES})
target_link_libraries(${TARGET_NAME}
@ -15,13 +15,13 @@ target_link_libraries(${TARGET_NAME}
if (Qt_VERSION_MAJOR VERSION_GREATER "5")
target_link_libraries(${TARGET_NAME}
PRIVATE
${Qt}::WebEngineQuick
${Qt}::WebEngineQuickPrivate)
Qt::WebEngineQuick
Qt::WebEngineQuickPrivate)
else()
target_link_libraries(${TARGET_NAME}
PRIVATE
${Qt}::WebEngine
${Qt}::WebEnginePrivate)
Qt::WebEngine
Qt::WebEnginePrivate)
endif()
set_target_properties(${TARGET_NAME}

View File

@ -13,7 +13,7 @@ list(APPEND TARGET_SOURCES
QskMainQml.cpp
QskQml.cpp)
add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS})
set_target_properties(${TARGET_NAME}
PROPERTIES

View File

@ -15,9 +15,9 @@ list(APPEND TARGET_OTHER_FILES
metadata.json)
if(BUILD_QSKDLL)
add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
qt_add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
else()
add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
qt_add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
endif()
target_link_libraries(${TARGET_NAME} PRIVATE qskinny)

View File

@ -15,9 +15,9 @@ list(APPEND TARGET_OTHER_FILES
metadata.json)
if(BUILD_QSKDLL)
add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
qt_add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
else()
add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
qt_add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
endif()
target_link_libraries(${TARGET_NAME}

View File

@ -379,9 +379,9 @@ endif()
set(TARGET_NAME qskinny)
if(BUILD_QSKDLL)
add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
else()
add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
qt_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES})
endif()
if(BUILD_QSKDLL)
@ -408,16 +408,16 @@ target_include_directories(${TARGET_NAME}
target_link_libraries(${TARGET_NAME}
PUBLIC
${Qt}::Core
${Qt}::CorePrivate
${Qt}::Quick
${Qt}::QuickPrivate)
Qt::Core
Qt::CorePrivate
Qt::Quick
Qt::QuickPrivate)
if (Qt_VERSION_MAJOR VERSION_GREATER "5")
target_link_libraries(${TARGET_NAME}
PUBLIC
${Qt}::OpenGL
${Qt}::OpenGLPrivate)
Qt::OpenGL
Qt::OpenGLPrivate)
endif()
if(ENABLE_HUNSPELL)

View File

@ -14,9 +14,9 @@ list(APPEND TARGET_SOURCES
set(TARGET_NAME qsktestsupport)
if (BUILD_QSKDLL)
add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS})
else()
add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS})
qt_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS})
endif()
if(ENABLE_FONT_CONFIG)

View File

@ -1,3 +1,3 @@
if(TARGET ${Qt}::Svg)
if(TARGET Qt::Svg)
add_subdirectory(svg2qvg)
endif()

View File

@ -1,7 +1,7 @@
set(TARGET_NAME svg2qvg)
set(TARGET_SOURCES main.cpp)
add_executable(${TARGET_NAME} ${TARGET_SOURCES})
qt_add_executable(${TARGET_NAME} ${TARGET_SOURCES})
if(BUILD_SVG2QVG_STANDALONE)
@ -36,14 +36,14 @@ if(BUILD_SVG2QVG_STANDALONE)
target_link_libraries(${TARGET_NAME}
PRIVATE
${Qt}::Gui
${Qt}::GuiPrivate
${Qt}::Svg)
Qt::Gui
Qt::GuiPrivate
Qt::Svg)
else()
target_link_libraries(${TARGET_NAME}
PRIVATE
qskinny
${Qt}::Svg)
Qt::Svg)
endif()
set_target_properties(${TARGET_NAME}