cmake: allow to build qtquick and qtwidgets independently

Still hardcoded to on, but the sources are now separated
This commit is contained in:
Sergio Martins
2022-05-28 15:13:22 +01:00
parent 4cd362dc33
commit a3750ea79a
2 changed files with 61 additions and 146 deletions

View File

@@ -101,7 +101,6 @@ include(FeatureSummary)
option(${PROJECT_NAME}_QT6 "Build against Qt 6" OFF)
option(${PROJECT_NAME}_DEVELOPER_MODE "Developer Mode" OFF)
option(${PROJECT_NAME}_PYTHON_BINDINGS "Build python bindings" OFF)
option(${PROJECT_NAME}_QTQUICK "Build for QtQuick instead of QtWidgets" OFF)
option(${PROJECT_NAME}_STATIC "Build statically" OFF)
option(${PROJECT_NAME}_TESTS "Build the tests" OFF)
option(${PROJECT_NAME}_EXAMPLES "Build the examples" ON)
@@ -148,18 +147,22 @@ else()
endif()
include(KDQtInstallPaths) #to set QT_INSTALL_FOO variables
# // TODOv2
find_package(Qt${Qt_VERSION_MAJOR}Quick)
find_package(Qt${Qt_VERSION_MAJOR}QuickControls2)
set(KDDW_FRONTEND_QTWIDGETS ON)
set(KDDW_FRONTEND_QTQUICK ON)
add_definitions(-DQT_NO_KEYWORDS)
set(${PROJECT_NAME}_DEPS "widgets")
if(${PROJECT_NAME}_QTQUICK)
find_package(Qt${Qt_VERSION_MAJOR}Quick)
find_package(Qt${Qt_VERSION_MAJOR}QuickControls2)
# TODOv2
add_definitions(-DKDDOCKWIDGETS_QTWIDGETS)
if (KDDW_FRONTEND_QTWIDGETS)
set(${PROJECT_NAME}_DEPS "widgets")
endif()
if (KDDW_FRONTEND_QTQUICK)
find_package(Qt${Qt_VERSION_MAJOR}Quick REQUIRED)
find_package(Qt${Qt_VERSION_MAJOR}QuickControls2 REQUIRED)
set(${PROJECT_NAME}_DEPS "${${PROJECT_NAME}_DEPS} quick quickcontrols2")
else()
add_definitions(-DKDDOCKWIDGETS_QTWIDGETS)
endif()
if(NOT WIN32 AND NOT APPLE AND NOT EMSCRIPTEN AND NOT ${PROJECT_NAME}_QT6 AND ${PROJECT_NAME}_X11EXTRAS)
@@ -171,7 +174,7 @@ if(${PROJECT_NAME}_DEVELOPER_MODE)
set(${PROJECT_NAME}_TESTS ON)
set(${PROJECT_NAME}_WERROR ON)
include(ECMEnableSanitizers)
# find_package(doctest REQUIRED)
# find_package(doctest REQUIRED) TODOv2
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
@@ -181,10 +184,7 @@ else()
endif()
set(CMAKE_CXX_STANDARD 17)
if(${PROJECT_NAME}_QTQUICK)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
@@ -305,9 +305,10 @@ if(${PROJECT_NAME}_PYTHON_BINDINGS)
endif()
if(${PROJECT_NAME}_EXAMPLES)
if(${PROJECT_NAME}_QTQUICK)
if(KDDW_FRONTEND_QTQUICK AND FALSE)
add_subdirectory(examples/qtquick)
else()
endif()
if(KDDW_FRONTEND_QTWIDGETS)
add_subdirectory(examples/dockwidgets)
add_subdirectory(examples/minimal)
add_subdirectory(examples/minimal-mdi)
@@ -358,13 +359,11 @@ if(${PROJECT_NAME}_TESTS)
add_test(NAME tst_separator COMMAND tst_separator)
add_test(NAME tst_floatingwindow COMMAND tst_floatingwindow)
add_test(NAME tst_dockwidget COMMAND tst_dockwidget)
add_test(NAME tst_multisplitter COMMAND tst_multisplitter)
if(NOT ${PROJECT_NAME}_QTQUICK)
# tst_multisplitter depends on QWidget
add_test(NAME tst_multisplitter COMMAND tst_multisplitter)
if(KDDW_FRONTEND_QTWIDGETS)
add_test(NAME tst_qtwidgets COMMAND tst_qtwidgets)
endif()
endif()
endif()

View File

@@ -21,7 +21,7 @@ add_definitions(-DQT_NO_SIGNALS_SLOTS_KEYWORDS
-DQT_NO_FOREACH
)
set(DOCKSLIBS_SRCS
set(KDDW_BACKEND_SRCS
KDDockWidgets.cpp
Config.cpp
Config.h
@@ -47,18 +47,15 @@ set(DOCKSLIBS_SRCS
private/WindowBeingDragged_p.h
private/DragController.cpp
private/DragController_p.h
private/WidgetResizeHandler.cpp
private/WidgetResizeHandler_p.h
private/WindowZOrder_x11_p.h
private/multisplitter/Item.cpp
private/multisplitter/Item_p.h
private/multisplitter/ItemFreeContainer.cpp
private/multisplitter/ItemFreeContainer_p.h
private/multisplitter/MultiSplitterConfig.cpp
private/multisplitter/MultiSplitterConfig.h
controllers/DockWidget.cpp
controllers/DockWidget.h
controllers/DropArea.cpp
@@ -108,6 +105,10 @@ set(DOCKSLIBS_SRCS
qtcommon/Platform_qt.h
qtcommon/Window_qt.cpp
qtcommon/Window_qt.h
kddockwidgets_resources.qrc
)
SET(KDDW_FRONTEND_QTWIDGETS_SRCS
qtwidgets/Window_qtwidgets.cpp
qtwidgets/Window_qtwidgets.h
qtwidgets/Platform_qtwidgets.cpp
@@ -156,62 +157,7 @@ set(DOCKSLIBS_SRCS
qtwidgets/ObjectViewer_p.h
)
# add_library(kddockwidgets_backend STATIC ${KDDW_BACKEND_SRCS})
# target_link_libraries(kddockwidgets_backend Qt5::Widgets)
# target_include_directories(kddockwidgets_backend
# PUBLIC
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/backend_temp_includes> # TODO remove
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/backend_temp_includes/kddockwidgets>
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/3rdparty> # TODO: Link to KDBindings instead
# )
#--------------------------------
set(DOCKS_INSTALLABLE_INCLUDES
docks_export.h
Config.h
ViewFactory.h
# DockWidget.h
KDDockWidgets.h
Qt5Qt6Compat_p.h
FocusScope.h
# QWidgetAdapter.h
LayoutSaver.h
MainWindowMDI.h
# MainWindow.h
)
set(DOCKS_INSTALLABLE_PRIVATE_INCLUDES
private/DragController_p.h
private/Draggable_p.h
private/DropIndicatorOverlay.h
# private/FloatingWindow_p.h
# private/Frame_p.h
private/LayoutSaver_p.h
# private/Layout.h
# private/SideBar_p.h
private/TitleBar_p.h
private/WindowBeingDragged_p.h
private/WidgetResizeHandler_p.h
private/DockRegistry_p.h
# private/TabWidget_p.h
)
set(DOCKS_INSTALLABLE_PRIVATE_WIDGET_INCLUDES
# private/widgets/QWidgetAdapter_widgets_p.h
# private/widgets/SideBarWidget_p.h
# private/widgets/FloatingWindowWidget_p.h
# private/widgets/FrameWidget_p.h
# private/widgets/TabBarWidget_p.h
# private/widgets/TabWidgetWidget_p.h
)
set(DOCKS_INSTALLABLE_PRIVATE_QUICK_INCLUDES
# private/quick/QWidgetAdapter_quick_p.h
)
set(KDDW_QTQUICK_FRONTEND_SRCS
SET(KDDW_FRONTEND_QTQUICK_SRCS
qtquick/Window_qtquick.cpp
qtquick/Window_qtquick.h
qtquick/Platform_qtquick.cpp
@@ -259,72 +205,44 @@ set(KDDW_QTQUICK_FRONTEND_SRCS
kddockwidgets_qtquick.qrc
)
if(${PROJECT_NAME}_QTQUICK)
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS}
DockWidgetQuick.cpp
DockWidgetQuick.h
private/quick/DockWidgetInstantiator.cpp
private/quick/DockWidgetInstantiator_p.h
# private/quick/QWidgetAdapter_quick.cpp
# private/quick/QWidgetAdapter_quick_p.h
private/quick/FloatingWindowQuick.cpp
private/quick/FloatingWindowQuick_p.h
# private/quick/TabWidgetQuick.cpp
# private/quick/TabWidgetQuick_p.h
private/quick/TabBarQuick.cpp
private/quick/TabBarQuick_p.h
private/quick/TitleBarQuick.cpp
private/quick/TitleBarQuick_p.h
private/quick/QmlTypes.cpp
private/quick/QmlTypes.h
private/quick/Helpers.cpp
private/quick/Helpers_p.h
private/quick/FrameQuick.cpp
private/quick/FrameQuick_p.h
private/quick/LayoutSaverInstantiator.cpp
private/quick/LayoutSaverInstantiator_p.h
private/quick/RubberBandQuick.cpp
private/quick/RubberBandQuick.h
private/quick/MainWindowQuick.cpp
private/quick/MainWindowQuick_p.h
private/quick/MainWindowInstantiator.cpp
private/quick/MainWindowInstantiator_p.h
private/multisplitter/Separator_quick.cpp
private/multisplitter/Separator_quick.h
private/multisplitter/Rubberband_quick.cpp
private/multisplitter/Rubberband_quick.h
kddockwidgets_qtquick.qrc)
set(DOCKS_INSTALLABLE_INCLUDES
docks_export.h
Config.h
ViewFactory.h
# DockWidget.h
KDDockWidgets.h
Qt5Qt6Compat_p.h
FocusScope.h
# QWidgetAdapter.h
LayoutSaver.h
MainWindowMDI.h
# MainWindow.h
)
set(DOCKS_INSTALLABLE_INCLUDES ${DOCKS_INSTALLABLE_INCLUDES} DockWidgetQuick.h)
set(DOCKS_INSTALLABLE_PRIVATE_INCLUDES
private/DragController_p.h
private/Draggable_p.h
private/DropIndicatorOverlay.h
# private/FloatingWindow_p.h
# private/Frame_p.h
private/LayoutSaver_p.h
# private/Layout.h
# private/SideBar_p.h
private/TitleBar_p.h
private/WindowBeingDragged_p.h
private/WidgetResizeHandler_p.h
private/DockRegistry_p.h
# private/TabWidget_p.h
)
else()
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS}
set(DOCKSLIBS_SRCS ${KDDW_BACKEND_SRCS})
# MainWindow.cpp
# MainWindow.h
# DockWidget.h
# private/widgets/TabBarWidget.cpp
# private/widgets/TabBarWidget_p.h
# private/widgets/FloatingWindowWidget.cpp
# private/widgets/FloatingWindowWidget_p.h
# private/widgets/FrameWidget.cpp
# private/widgets/FrameWidget_p.h
# private/widgets/SideBarWidget.cpp
# private/widgets/SideBarWidget_p.h
# private/widgets/TabWidgetWidget.cpp
# private/widgets/TabWidgetWidget_p.h
# private/widgets/DockWidget.cpp
# private/widgets/QWidgetAdapter_widgets.cpp
# private/widgets/QWidgetAdapter_widgets_p.h
# private/indicators/AnimatedIndicators.cpp
)
if (KDDW_FRONTEND_QTWIDGETS)
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS} ${KDDW_FRONTEND_QTWIDGETS_SRCS})
endif()
set(DOCKS_INSTALLABLE_INCLUDES
${DOCKS_INSTALLABLE_INCLUDES}
# MainWindow.h
# DockWidget.h
# MDIArea.h
)
if (KDDW_FRONTEND_QTQUICK)
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS} ${KDDW_FRONTEND_QTQUICK_SRCS})
endif()
#Generate C/C++ CamelCase forwarding headers (only public includes)
@@ -345,9 +263,7 @@ ecm_generate_headers(camelcase_HEADERS
MainWindowMDI
)
set(RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/kddockwidgets_resources.qrc)
add_library(kddockwidgets ${KDDockWidgets_LIBRARY_MODE} ${DOCKSLIBS_SRCS} ${KDDW_QTQUICK_FRONTEND_SRCS} ${DOCKS_INSTALLABLE_INCLUDES} ${RESOURCES})
add_library(kddockwidgets ${KDDockWidgets_LIBRARY_MODE} ${DOCKSLIBS_SRCS} ${DOCKS_INSTALLABLE_INCLUDES} ${RESOURCES})
add_library(KDAB::kddockwidgets ALIAS kddockwidgets)
set_target_properties(kddockwidgets PROPERTIES OUTPUT_NAME "kddockwidgets${KDDockWidgets_LIBRARY_QTID}")