1
0
Fork 0

Use version-less Qt targets and functions whenever possible

This commit is contained in:
Ilya Fedin 2022-08-08 12:34:32 +04:00 committed by John Preston
parent c65bf3b134
commit 9615515b06
7 changed files with 133 additions and 468 deletions

View file

@ -15,12 +15,7 @@ add_library(desktop-app::external_fcitx5_qt ALIAS external_fcitx5_qt)
init_target(external_fcitx5_qt "(external)")
set(fcitx5_qt_loc ${third_party_loc}/fcitx5-qt)
if (DESKTOP_APP_QT6)
set(fcitx5_qt_src ${fcitx5_qt_loc}/qt6/platforminputcontext)
else()
set(fcitx5_qt_src ${fcitx5_qt_loc}/qt5/platforminputcontext)
endif()
set(fcitx5_qt_src ${fcitx5_qt_loc}/qt${QT_VERSION_MAJOR}/platforminputcontext)
set_target_properties(external_fcitx5_qt PROPERTIES AUTOMOC ON)
set(FCITX5_QT_EXTRA_PLUGIN_NAME "")

View file

@ -15,12 +15,7 @@ add_library(desktop-app::external_fcitx5_qt_dbusaddons ALIAS external_fcitx5_qt_
init_target(external_fcitx5_qt_dbusaddons "(external)")
set(fcitx5_qt_loc ${third_party_loc}/fcitx5-qt)
if (DESKTOP_APP_QT6)
set(fcitx5_qt_dbusaddons_src ${fcitx5_qt_loc}/qt6/dbusaddons)
else()
set(fcitx5_qt_dbusaddons_src ${fcitx5_qt_loc}/qt5/dbusaddons)
endif()
set(fcitx5_qt_dbusaddons_src ${fcitx5_qt_loc}/qt${QT_VERSION_MAJOR}/dbusaddons)
set_target_properties(external_fcitx5_qt_dbusaddons PROPERTIES AUTOMOC ON)
@ -40,12 +35,7 @@ PRIVATE
)
include(GenerateExportHeader)
if (DESKTOP_APP_QT6)
generate_export_header(external_fcitx5_qt_dbusaddons BASE_NAME Fcitx5Qt6DBusAddons)
else()
generate_export_header(external_fcitx5_qt_dbusaddons BASE_NAME Fcitx5Qt5DBusAddons)
endif()
generate_export_header(external_fcitx5_qt_dbusaddons BASE_NAME Fcitx5Qt${QT_VERSION_MAJOR}DBusAddons)
target_include_directories(external_fcitx5_qt_dbusaddons
PUBLIC
@ -53,7 +43,7 @@ PUBLIC
"${CMAKE_CURRENT_BINARY_DIR}"
)
if (NOT DESKTOP_APP_QT6)
if (QT_VERSION_MAJOR EQUAL 5)
target_compile_definitions(external_fcitx5_qt_dbusaddons
PRIVATE
FCITX5QT5DBUSADDONS_STATIC_DEFINE

View file

@ -15,12 +15,7 @@ add_library(desktop-app::external_fcitx_qt5 ALIAS external_fcitx_qt5)
init_target(external_fcitx_qt5 "(external)")
set(fcitx_qt5_loc ${third_party_loc}/fcitx-qt5)
if (DESKTOP_APP_QT6)
set(fcitx_qt5_src ${fcitx_qt5_loc}/qt6/platforminputcontext)
else()
set(fcitx_qt5_src ${fcitx_qt5_loc}/qt5/platforminputcontext)
endif()
set(fcitx_qt5_src ${fcitx_qt5_loc}/qt${QT_VERSION_MAJOR}/platforminputcontext)
set_target_properties(external_fcitx_qt5 PROPERTIES AUTOMOC ON)
@ -43,17 +38,10 @@ INCLUDE ${fcitx_qt5_src}/fcitxqtdbustypes.h)
set_source_files_properties(${fcitx_qt5_src}/org.fcitx.Fcitx.InputMethod1.xml PROPERTIES
INCLUDE ${fcitx_qt5_src}/fcitxqtdbustypes.h)
if (DESKTOP_APP_QT6)
qt6_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputContext.xml inputcontextproxy)
qt6_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputContext1.xml inputcontext1proxy)
qt6_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputMethod.xml inputmethodproxy)
qt6_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputMethod1.xml inputmethod1proxy)
else()
qt5_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputContext.xml inputcontextproxy)
qt5_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputContext1.xml inputcontext1proxy)
qt5_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputMethod.xml inputmethodproxy)
qt5_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputMethod1.xml inputmethod1proxy)
endif()
qt_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputContext.xml inputcontextproxy)
qt_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputContext1.xml inputcontext1proxy)
qt_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputMethod.xml inputmethodproxy)
qt_add_dbus_interface(fcitx_qt5_adaptors ${fcitx_qt5_src}/org.fcitx.Fcitx.InputMethod1.xml inputmethod1proxy)
target_sources(external_fcitx_qt5 PRIVATE ${fcitx_qt5_adaptors})

View file

@ -4,50 +4,32 @@
# For license and copyright information please follow this link:
# https://github.com/desktop-app/legal/blob/master/LEGAL
add_subdirectory(qt_static_plugins)
if (DESKTOP_APP_QT6)
add_subdirectory(qt6)
return()
endif()
add_library(external_qt INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_qt ALIAS external_qt)
add_subdirectory(qt_static_plugins)
if (DESKTOP_APP_USE_PACKAGED)
target_link_libraries(external_qt
INTERFACE
Qt5::Core
Qt5::CorePrivate
Qt5::Gui
Qt5::GuiPrivate
Qt5::Widgets
Qt5::Network
Qt5::Svg
Qt::Core
Qt::CorePrivate
$<TARGET_NAME_IF_EXISTS:Qt::Core5Compat>
Qt::Gui
Qt::GuiPrivate
$<TARGET_NAME_IF_EXISTS:Qt::OpenGL>
Qt::Widgets
$<TARGET_NAME_IF_EXISTS:Qt::OpenGLWidgets>
Qt::Network
Qt::Svg
$<TARGET_NAME_IF_EXISTS:Qt::DBus>
$<TARGET_NAME_IF_EXISTS:Qt::XkbCommonSupport>
$<TARGET_NAME_IF_EXISTS:Qt::XkbCommonSupportPrivate>
$<TARGET_NAME_IF_EXISTS:Qt::WaylandClient>
$<TARGET_NAME_IF_EXISTS:Qt::WaylandClientPrivate>
$<TARGET_NAME_IF_EXISTS:Qt::WaylandGlobalPrivate>
)
if (Qt5DBus_FOUND)
target_link_libraries(external_qt
INTERFACE
Qt5::DBus
)
endif()
if (Qt5XkbCommonSupport_FOUND)
target_link_libraries(external_qt
INTERFACE
Qt5::XkbCommonSupport
Qt5::XkbCommonSupportPrivate
)
endif()
if (LINUX AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
target_link_libraries(external_qt
INTERFACE
Qt5::WaylandClient
Qt5::WaylandClientPrivate
)
endif()
return()
endif()
@ -55,73 +37,46 @@ target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/include
${qt_loc}/include/QtCore
$<$<TARGET_EXISTS:Qt::Core5Compat>:${qt_loc}/include/QtCore5Compat>
${qt_loc}/include/QtGui
$<$<TARGET_EXISTS:Qt::OpenGL>:${qt_loc}/include/QtOpenGL>
${qt_loc}/include/QtWidgets
$<$<TARGET_EXISTS:Qt::OpenGLWidgets>:${qt_loc}/include/QtOpenGLWidgets>
${qt_loc}/include/QtSvg
$<$<TARGET_EXISTS:Qt::DBus>:${qt_loc}/include/QtDBus>
$<$<TARGET_EXISTS:Qt::XkbCommonSupport>:${qt_loc}/include/QtXkbCommonSupport>
$<$<TARGET_EXISTS:Qt::WaylandClient>:${qt_loc}/include/QtWaylandClient>
${qt_loc}/include/QtCore/${qt_version}
${qt_loc}/include/QtGui/${qt_version}
$<$<TARGET_EXISTS:Qt::XkbCommonSupportPrivate>:${qt_loc}/include/QtXkbCommonSupport/${qt_version}>
$<$<TARGET_EXISTS:Qt::WaylandClientPrivate>:${qt_loc}/include/QtWaylandClient/${qt_version}>
$<$<TARGET_EXISTS:Qt::WaylandGlobalPrivate>:${qt_loc}/include/QtWaylandGlobal/${qt_version}>
${qt_loc}/include/QtCore/${qt_version}/QtCore
${qt_loc}/include/QtGui/${qt_version}/QtGui
$<$<TARGET_EXISTS:Qt::XkbCommonSupportPrivate>:${qt_loc}/include/QtXkbCommonSupport/${qt_version}/QtXkbCommonSupport>
$<$<TARGET_EXISTS:Qt::WaylandClientPrivate>:${qt_loc}/include/QtWaylandClient/${qt_version}/QtWaylandClient>
$<$<TARGET_EXISTS:Qt::WaylandGlobalPrivate>:${qt_loc}/include/QtWaylandGlobal/${qt_version}/QtWaylandGlobal>
)
if (Qt5DBus_FOUND)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/include/QtDBus
)
endif()
if (Qt5XkbCommonSupport_FOUND)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/include/QtXkbCommonSupport
${qt_loc}/include/QtXkbCommonSupport/${qt_version}
${qt_loc}/include/QtXkbCommonSupport/${qt_version}/QtXkbCommonSupport
)
endif()
if (LINUX AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/include/QtWaylandClient
${qt_loc}/include/QtWaylandClient/${qt_version}
${qt_loc}/include/QtWaylandClient/${qt_version}/QtWaylandClient
)
endif()
target_compile_definitions(external_qt
INTERFACE
_REENTRANT
QT_STATICPLUGIN
QT_PLUGIN
QT_WIDGETS_LIB
QT_NETWORK_LIB
QT_GUI_LIB
QT_CORE_LIB
$<$<TARGET_EXISTS:Qt::Core5Compat>:QT_CORE5COMPAT_LIB>
QT_GUI_LIB
$<$<TARGET_EXISTS:Qt::OpenGL>:QT_OPENGL_LIB>
QT_WIDGETS_LIB
$<$<TARGET_EXISTS:Qt::OpenGLWidgets>:QT_OPENGLWIDGETS_LIB>
QT_NETWORK_LIB
QT_SVG_LIB
$<$<TARGET_EXISTS:Qt::DBus>:QT_DBUS_LIB>
$<$<TARGET_EXISTS:Qt::XkbCommonSupport>:QT_XKBCOMMON_SUPPORT_LIB>
$<$<TARGET_EXISTS:Qt::WaylandClient>:QT_WAYLANDCLIENT_LIB>
$<$<TARGET_EXISTS:Qt::WaylandGlobalPrivate>:QT_WAYLANDGLOBAL_LIB>
)
if (Qt5DBus_FOUND)
target_compile_definitions(external_qt
INTERFACE
QT_DBUS_LIB
)
endif()
if (Qt5XkbCommonSupport_FOUND)
target_compile_definitions(external_qt
INTERFACE
QT_XKBCOMMON_SUPPORT_LIB
)
endif()
if (LINUX AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
target_compile_definitions(external_qt
INTERFACE
QT_WAYLANDCLIENT_LIB
)
endif()
if (WIN32)
set(qt_lib_prefix "")
set(qt_lib_suffix $<$<CONFIG:Debug>:d>.lib)
@ -135,23 +90,48 @@ else()
endif()
set(common_qt_libs
plugins/bearer/${qt_lib_prefix}qgenericbearer
plugins/imageformats/${qt_lib_prefix}qwebp
plugins/imageformats/${qt_lib_prefix}qgif
plugins/imageformats/${qt_lib_prefix}qjpeg
lib/${qt_lib_prefix}Qt5PrintSupport
lib/${qt_lib_prefix}Qt5AccessibilitySupport
lib/${qt_lib_prefix}Qt5FontDatabaseSupport
lib/${qt_lib_prefix}Qt5EventDispatcherSupport
lib/${qt_lib_prefix}Qt5ThemeSupport
lib/${qt_lib_prefix}Qt5Network
lib/${qt_lib_prefix}Qt5Widgets
lib/${qt_lib_prefix}Qt5Gui
lib/${qt_lib_prefix}Qt5Svg
lib/${qt_lib_prefix}qtharfbuzz
lib/${qt_lib_prefix}qtlibpng
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Svg
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Network
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Widgets
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Gui
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Core
)
if (TARGET Qt::Core5Compat)
list(PREPEND common_qt_libs
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Core5Compat
)
endif()
if (TARGET Qt::OpenGL)
list(PREPEND common_qt_libs
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}OpenGL
)
endif()
if (TARGET Qt::OpenGLWidgets)
list(PREPEND common_qt_libs
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}OpenGLWidgets
)
endif()
if (QT_VERSION_MAJOR GREATER_EQUAL 6)
list(APPEND common_qt_libs
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledHarfbuzz
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledLibpng
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledPcre2
)
else()
list(APPEND common_qt_libs
lib/${qt_lib_prefix}qtharfbuzz
lib/${qt_lib_prefix}qtlibpng
lib/${qt_lib_prefix}qtpcre2
)
endif()
set(qt_libs_list "")
if (WIN32)
target_include_directories(external_qt SYSTEM
@ -159,12 +139,15 @@ if (WIN32)
${qt_loc}/mkspecs/win32-msvc
)
set(qt_libs
plugins/bearer/${qt_lib_prefix}qgenericbearer
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}AccessibilitySupport
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}FontDatabaseSupport
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}EventDispatcherSupport
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}ThemeSupport
${common_qt_libs}
lib/${qt_lib_prefix}Qt5Core
lib/${qt_lib_prefix}Qt5WindowsUIAutomationSupport
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}WindowsUIAutomationSupport
lib/${qt_lib_prefix}qtmain
lib/${qt_lib_prefix}qtfreetype
lib/${qt_lib_prefix}qtpcre2
plugins/platforms/${qt_lib_prefix}qwindows
)
foreach (lib ${qt_libs})
@ -182,57 +165,46 @@ elseif (APPLE)
)
set(qt_libs
${common_qt_libs}
lib/${qt_lib_prefix}Qt5Core
lib/${qt_lib_prefix}Qt5GraphicsSupport
lib/${qt_lib_prefix}Qt5ClipboardSupport
lib/${qt_lib_prefix}qtfreetype
lib/${qt_lib_prefix}qtpcre2
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledFreetype
plugins/platforms/${qt_lib_prefix}qcocoa
plugins/tls/${qt_lib_prefix}qsecuretransportbackend
plugins/networkinformation/${qt_lib_prefix}qscnetworkreachability
)
foreach (lib ${qt_libs})
list(APPEND qt_libs_list "${qt_loc}/${lib}${qt_lib_suffix}")
endforeach()
target_link_libraries(external_qt
INTERFACE
cups
list(APPEND qt_libs_list
$<TARGET_OBJECTS:Qt${QT_VERSION_MAJOR}::QCocoaIntegrationPlugin_resources_1>
)
else()
set(qt_libs
plugins/platforminputcontexts/${qt_lib_prefix}composeplatforminputcontextplugin
plugins/platformthemes/${qt_lib_prefix}qgtk3
plugins/platforms/${qt_lib_prefix}qxcb
plugins/tls/${qt_lib_prefix}qopensslbackend
plugins/xcbglintegrations/${qt_lib_prefix}qxcb-egl-integration
plugins/xcbglintegrations/${qt_lib_prefix}qxcb-glx-integration
plugins/iconengines/${qt_lib_prefix}qsvgicon
lib/${qt_lib_prefix}Qt5XcbQpa
lib/${qt_lib_prefix}Qt5EglSupport
lib/${qt_lib_prefix}Qt5GlxSupport
lib/${qt_lib_prefix}Qt5ServiceSupport
lib/${qt_lib_prefix}Qt5EdidSupport
lib/${qt_lib_prefix}Qt5XkbCommonSupport
lib/${qt_lib_prefix}Qt5ServiceSupport
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}XcbQpa
${common_qt_libs}
lib/${qt_lib_prefix}Qt5Core
lib/${qt_lib_prefix}qtpcre2
)
if (Qt5DBus_FOUND)
if (TARGET Qt::DBus)
list(APPEND qt_libs
plugins/bearer/${qt_lib_prefix}qconnmanbearer
plugins/bearer/${qt_lib_prefix}qnmbearer
plugins/platforminputcontexts/${qt_lib_prefix}ibusplatforminputcontextplugin
plugins/platformthemes/${qt_lib_prefix}qxdgdesktopportal
lib/${qt_lib_prefix}Qt5LinuxAccessibilitySupport
lib/${qt_lib_prefix}Qt5DBus
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}DBus
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Core
)
endif()
if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
if (TARGET Qt::WaylandClient)
list(PREPEND qt_libs
plugins/platforms/${qt_lib_prefix}qwayland-generic
plugins/platforms/${qt_lib_prefix}qwayland-egl
plugins/wayland-graphics-integration-client/${qt_lib_prefix}qt-plugin-wayland-egl
plugins/wayland-shell-integration/${qt_lib_prefix}xdg-shell
plugins/wayland-decoration-client/${qt_lib_prefix}bradient
lib/${qt_lib_prefix}Qt5WaylandClient
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}WaylandEglClientHwIntegration
lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}WaylandClient
)
endif()
foreach (lib ${qt_libs})
@ -240,6 +212,15 @@ else()
endforeach()
endif()
if (QT_VERSION_MAJOR GREATER_EQUAL 6)
list(APPEND qt_libs_list
$<TARGET_OBJECTS:Qt${QT_VERSION_MAJOR}::Gui_resources_1>
$<TARGET_OBJECTS:Qt${QT_VERSION_MAJOR}::Widgets_resources_1>
$<TARGET_OBJECTS:Qt${QT_VERSION_MAJOR}::Widgets_resources_2>
$<TARGET_OBJECTS:Qt${QT_VERSION_MAJOR}::Widgets_resources_3>
)
endif()
target_link_libraries(external_qt
INTERFACE
${qt_libs_list}
@ -260,7 +241,6 @@ if (LINUX)
target_link_static_libraries(external_qt
INTERFACE
proxy
epoxy
xkbcommon
xkbcommon-x11
xcb-glx
@ -271,15 +251,13 @@ if (LINUX)
xcb-render
xcb-image
xcb-xfixes
xcb-xinerama
xcb-xinput
xcb-shape
xcb-sync
xcb-util
xcb-render-util
xcb-keysyms
)
if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
if (TARGET Qt::WaylandClient)
target_link_libraries(external_qt
INTERFACE
desktop-app::linux_wayland_helper
@ -290,8 +268,11 @@ if (LINUX)
desktop-app::linux_xcb_helper
fontconfig
freetype
EGL
GL
xcb
X11
X11-xcb
glib-2.0
)
endif()

View file

@ -23,36 +23,33 @@ if (NOT DESKTOP_APP_USE_PACKAGED)
endif()
if (DESKTOP_APP_QT6)
find_package(Qt6 COMPONENTS Core Core5Compat Gui OpenGL Widgets OpenGLWidgets Network Svg REQUIRED)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
else()
find_package(Qt5 COMPONENTS Core Gui Widgets Network Svg REQUIRED)
find_package(QT NAMES Qt5 REQUIRED COMPONENTS Core)
endif()
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets Network Svg REQUIRED)
if (QT_VERSION_MAJOR GREATER_EQUAL 6)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core5Compat OpenGL OpenGLWidgets REQUIRED)
endif()
if (LINUX)
if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
if (DESKTOP_APP_QT6)
find_package(Qt6 COMPONENTS WaylandClient REQUIRED)
find_package(Qt6 OPTIONAL_COMPONENTS WaylandGlobalPrivate QUIET)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS WaylandClient REQUIRED)
if (QT_VERSION_MAJOR GREATER_EQUAL 6)
find_package(Qt${QT_VERSION_MAJOR} OPTIONAL_COMPONENTS WaylandGlobalPrivate QUIET)
else()
find_package(Qt5 COMPONENTS WaylandClient REQUIRED)
find_package(Qt5 OPTIONAL_COMPONENTS XkbCommonSupport QUIET)
find_package(Qt${QT_VERSION_MAJOR} OPTIONAL_COMPONENTS XkbCommonSupport QUIET)
endif()
endif()
if ((NOT DESKTOP_APP_USE_PACKAGED
OR (DESKTOP_APP_USE_PACKAGED AND DESKTOP_APP_USE_PACKAGED_LAZY))
AND NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION)
if (DESKTOP_APP_QT6)
find_package(Qt6 COMPONENTS DBus REQUIRED)
else()
find_package(Qt5 COMPONENTS DBus REQUIRED)
endif()
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS DBus REQUIRED)
elseif (NOT DESKTOP_APP_USE_PACKAGED)
if (DESKTOP_APP_QT6)
find_package(Qt6 OPTIONAL_COMPONENTS DBus QUIET)
else()
find_package(Qt5 OPTIONAL_COMPONENTS DBus QUIET)
endif()
find_package(Qt${QT_VERSION_MAJOR} OPTIONAL_COMPONENTS DBus QUIET)
endif()
endif()

View file

@ -1,281 +0,0 @@
# This file is part of Desktop App Toolkit,
# a set of libraries for developing nice desktop applications.
#
# For license and copyright information please follow this link:
# https://github.com/desktop-app/legal/blob/master/LEGAL
add_library(external_qt INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_qt ALIAS external_qt)
if (DESKTOP_APP_USE_PACKAGED)
target_link_libraries(external_qt
INTERFACE
Qt6::Core
Qt6::CorePrivate
Qt6::Core5Compat
Qt6::Gui
Qt6::GuiPrivate
Qt6::OpenGL
Qt6::Widgets
Qt6::OpenGLWidgets
Qt6::Network
Qt6::Svg
)
if (Qt6DBus_FOUND)
target_link_libraries(external_qt
INTERFACE
Qt6::DBus
)
endif()
if (LINUX AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
target_link_libraries(external_qt
INTERFACE
Qt6::WaylandClient
Qt6::WaylandClientPrivate
)
if (Qt6WaylandGlobalPrivate_FOUND)
target_link_libraries(external_qt
INTERFACE
Qt6::WaylandGlobalPrivate
)
endif()
endif()
return()
endif()
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/include
${qt_loc}/include/QtCore
${qt_loc}/include/QtCore5Compat
${qt_loc}/include/QtGui
${qt_loc}/include/QtOpenGL
${qt_loc}/include/QtWidgets
${qt_loc}/include/QtOpenGLWidgets
${qt_loc}/include/QtSvg
${qt_loc}/include/QtCore/${qt_version}
${qt_loc}/include/QtGui/${qt_version}
${qt_loc}/include/QtCore/${qt_version}/QtCore
${qt_loc}/include/QtGui/${qt_version}/QtGui
)
if (Qt6DBus_FOUND)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/include/QtDBus
)
endif()
if (LINUX AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/include/QtWaylandClient
${qt_loc}/include/QtWaylandGlobal
${qt_loc}/include/QtWaylandClient/${qt_version}
${qt_loc}/include/QtWaylandGlobal/${qt_version}
${qt_loc}/include/QtWaylandClient/${qt_version}/QtWaylandClient
${qt_loc}/include/QtWaylandGlobal/${qt_version}/QtWaylandGlobal
)
endif()
target_compile_definitions(external_qt
INTERFACE
_REENTRANT
QT_STATICPLUGIN
QT_PLUGIN
QT_SVG_LIB
QT_NETWORK_LIB
QT_OPENGLWIDGETS_LIB
QT_WIDGETS_LIB
QT_OPENGL_LIB
QT_GUI_LIB
QT_CORE5COMPAT_LIB
QT_CORE_LIB
)
if (Qt6DBus_FOUND)
target_compile_definitions(external_qt
INTERFACE
QT_DBUS_LIB
)
endif()
if (LINUX AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
target_compile_definitions(external_qt
INTERFACE
QT_WAYLANDCLIENT_LIB
QT_WAYLANDGLOBAL_LIB
)
endif()
if (WIN32)
set(qt_lib_prefix "")
set(qt_lib_suffix $<$<CONFIG:Debug>:d>.lib)
else()
set(qt_lib_prefix lib)
if (APPLE)
set(qt_lib_suffix $<$<CONFIG:Debug>:_debug>.a)
else()
set(qt_lib_suffix .a)
endif()
endif()
set(common_qt_libs
plugins/imageformats/${qt_lib_prefix}qwebp
plugins/imageformats/${qt_lib_prefix}qgif
plugins/imageformats/${qt_lib_prefix}qjpeg
lib/${qt_lib_prefix}Qt6Svg
lib/${qt_lib_prefix}Qt6Network
lib/${qt_lib_prefix}Qt6OpenGLWidgets
lib/${qt_lib_prefix}Qt6Widgets
lib/${qt_lib_prefix}Qt6OpenGL
lib/${qt_lib_prefix}Qt6Gui
lib/${qt_lib_prefix}Qt6Core5Compat
lib/${qt_lib_prefix}Qt6Core
lib/${qt_lib_prefix}Qt6BundledHarfbuzz
lib/${qt_lib_prefix}Qt6BundledLibpng
lib/${qt_lib_prefix}Qt6BundledPcre2
)
set(qt_libs_list "")
if (WIN32)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/mkspecs/win32-msvc
)
set(qt_libs
${common_qt_libs}
lib/${qt_lib_prefix}Qt6WindowsUIAutomationSupport
lib/${qt_lib_prefix}qtmain
lib/${qt_lib_prefix}Qt6BundledFreetype
plugins/platforms/${qt_lib_prefix}qwindows
plugins/tls/${qt_lib_prefix}qopensslbackend
)
foreach (lib ${qt_libs})
list(APPEND qt_libs_list "${qt_loc}/${lib}${qt_lib_suffix}")
endforeach()
target_link_libraries(external_qt
INTERFACE
desktop-app::external_angle
)
elseif (APPLE)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/mkspecs/macx-clang
)
set(qt_libs
${common_qt_libs}
lib/${qt_lib_prefix}Qt6BundledFreetype
plugins/platforms/${qt_lib_prefix}qcocoa
plugins/tls/${qt_lib_prefix}qsecuretransportbackend
plugins/networkinformation/${qt_lib_prefix}qscnetworkreachability
)
foreach (lib ${qt_libs})
list(APPEND qt_libs_list "${qt_loc}/${lib}${qt_lib_suffix}")
endforeach()
list(APPEND qt_libs_list
$<TARGET_OBJECTS:Qt6::QCocoaIntegrationPlugin_resources_1>
)
else()
set(qt_libs
plugins/platforminputcontexts/${qt_lib_prefix}composeplatforminputcontextplugin
plugins/platformthemes/${qt_lib_prefix}qgtk3
plugins/platforms/${qt_lib_prefix}qxcb
plugins/tls/${qt_lib_prefix}qopensslbackend
plugins/xcbglintegrations/${qt_lib_prefix}qxcb-egl-integration
plugins/xcbglintegrations/${qt_lib_prefix}qxcb-glx-integration
plugins/iconengines/${qt_lib_prefix}qsvgicon
lib/${qt_lib_prefix}Qt6XcbQpa
${common_qt_libs}
)
if (Qt6DBus_FOUND)
list(APPEND qt_libs
plugins/platforminputcontexts/${qt_lib_prefix}ibusplatforminputcontextplugin
plugins/platformthemes/${qt_lib_prefix}qxdgdesktopportal
lib/${qt_lib_prefix}Qt6DBus
lib/${qt_lib_prefix}Qt6Core
)
endif()
if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
list(PREPEND qt_libs
plugins/platforms/${qt_lib_prefix}qwayland-generic
plugins/platforms/${qt_lib_prefix}qwayland-egl
plugins/wayland-graphics-integration-client/${qt_lib_prefix}qt-plugin-wayland-egl
plugins/wayland-shell-integration/${qt_lib_prefix}xdg-shell
plugins/wayland-decoration-client/${qt_lib_prefix}bradient
lib/${qt_lib_prefix}Qt6WaylandEglClientHwIntegration
lib/${qt_lib_prefix}Qt6WaylandClient
)
endif()
foreach (lib ${qt_libs})
list(APPEND qt_libs_list "${qt_loc}/${lib}${qt_lib_suffix}")
endforeach()
endif()
list(APPEND qt_libs_list
$<TARGET_OBJECTS:Qt6::Gui_resources_1>
$<TARGET_OBJECTS:Qt6::Widgets_resources_1>
$<TARGET_OBJECTS:Qt6::Widgets_resources_2>
$<TARGET_OBJECTS:Qt6::Widgets_resources_3>
)
target_link_libraries(external_qt
INTERFACE
${qt_libs_list}
$<LINK_ONLY:desktop-app::external_openssl>
$<TARGET_FILE:desktop-app::external_openssl_ssl>
$<TARGET_FILE:desktop-app::external_openssl_crypto>
$<LINK_ONLY:desktop-app::external_jpeg>
$<TARGET_FILE:desktop-app::external_jpeg>
$<LINK_ONLY:desktop-app::external_zlib>
$<TARGET_FILE:desktop-app::external_zlib>
)
if (LINUX)
target_include_directories(external_qt SYSTEM
INTERFACE
${qt_loc}/mkspecs/linux-g++
)
target_link_static_libraries(external_qt
INTERFACE
proxy
xkbcommon
xkbcommon-x11
xcb-glx
xcb-xkb
xcb-randr
xcb-icccm
xcb-shm
xcb-render
xcb-image
xcb-xfixes
xcb-shape
xcb-sync
xcb-util
xcb-render-util
xcb-keysyms
)
if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
target_link_libraries(external_qt
INTERFACE
desktop-app::linux_wayland_helper
)
endif()
target_link_libraries(external_qt
INTERFACE
desktop-app::linux_xcb_helper
fontconfig
freetype
EGL
GL
xcb
X11
X11-xcb
glib-2.0
)
endif()

View file

@ -34,14 +34,9 @@ function(target_prepare_qrc target_name)
set(rcc_file ${target_name}.rcc)
set(rcc_path "${CMAKE_BINARY_DIR}/${rcc_file}")
source_group(TREE ${CMAKE_BINARY_DIR} PREFIX Resources FILES ${rcc_path})
if (DESKTOP_APP_QT6)
set(rcc_binary Qt6::rcc)
else()
set(rcc_binary Qt5::rcc)
endif()
add_custom_command(OUTPUT ${rcc_path}
DEPENDS ${qrc_files}
COMMAND ${rcc_binary} ${rcc_flags} -o ${rcc_path} ${qrc_files}
COMMAND Qt::rcc ${rcc_flags} -o ${rcc_path} ${qrc_files}
COMMAND_EXPAND_LISTS VERBATIM
)
target_add_resource(${target_name} ${rcc_path})