cmake: allow to build qtquick and qtwidgets independently
Still hardcoded to on, but the sources are now separated
This commit is contained in:
@@ -101,7 +101,6 @@ include(FeatureSummary)
|
|||||||
option(${PROJECT_NAME}_QT6 "Build against Qt 6" OFF)
|
option(${PROJECT_NAME}_QT6 "Build against Qt 6" OFF)
|
||||||
option(${PROJECT_NAME}_DEVELOPER_MODE "Developer Mode" OFF)
|
option(${PROJECT_NAME}_DEVELOPER_MODE "Developer Mode" OFF)
|
||||||
option(${PROJECT_NAME}_PYTHON_BINDINGS "Build python bindings" 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}_STATIC "Build statically" OFF)
|
||||||
option(${PROJECT_NAME}_TESTS "Build the tests" OFF)
|
option(${PROJECT_NAME}_TESTS "Build the tests" OFF)
|
||||||
option(${PROJECT_NAME}_EXAMPLES "Build the examples" ON)
|
option(${PROJECT_NAME}_EXAMPLES "Build the examples" ON)
|
||||||
@@ -148,18 +147,22 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
include(KDQtInstallPaths) #to set QT_INSTALL_FOO variables
|
include(KDQtInstallPaths) #to set QT_INSTALL_FOO variables
|
||||||
|
|
||||||
# // TODOv2
|
set(KDDW_FRONTEND_QTWIDGETS ON)
|
||||||
find_package(Qt${Qt_VERSION_MAJOR}Quick)
|
set(KDDW_FRONTEND_QTQUICK ON)
|
||||||
find_package(Qt${Qt_VERSION_MAJOR}QuickControls2)
|
|
||||||
|
|
||||||
add_definitions(-DQT_NO_KEYWORDS)
|
add_definitions(-DQT_NO_KEYWORDS)
|
||||||
set(${PROJECT_NAME}_DEPS "widgets")
|
|
||||||
if(${PROJECT_NAME}_QTQUICK)
|
# TODOv2
|
||||||
find_package(Qt${Qt_VERSION_MAJOR}Quick)
|
add_definitions(-DKDDOCKWIDGETS_QTWIDGETS)
|
||||||
find_package(Qt${Qt_VERSION_MAJOR}QuickControls2)
|
|
||||||
|
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")
|
set(${PROJECT_NAME}_DEPS "${${PROJECT_NAME}_DEPS} quick quickcontrols2")
|
||||||
else()
|
|
||||||
add_definitions(-DKDDOCKWIDGETS_QTWIDGETS)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT WIN32 AND NOT APPLE AND NOT EMSCRIPTEN AND NOT ${PROJECT_NAME}_QT6 AND ${PROJECT_NAME}_X11EXTRAS)
|
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}_TESTS ON)
|
||||||
set(${PROJECT_NAME}_WERROR ON)
|
set(${PROJECT_NAME}_WERROR ON)
|
||||||
include(ECMEnableSanitizers)
|
include(ECMEnableSanitizers)
|
||||||
# find_package(doctest REQUIRED)
|
# find_package(doctest REQUIRED) TODOv2
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
@@ -181,10 +184,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
if(${PROJECT_NAME}_QTQUICK)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
set(CMAKE_AUTORCC ON)
|
set(CMAKE_AUTORCC ON)
|
||||||
@@ -305,9 +305,10 @@ if(${PROJECT_NAME}_PYTHON_BINDINGS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${PROJECT_NAME}_EXAMPLES)
|
if(${PROJECT_NAME}_EXAMPLES)
|
||||||
if(${PROJECT_NAME}_QTQUICK)
|
if(KDDW_FRONTEND_QTQUICK AND FALSE)
|
||||||
add_subdirectory(examples/qtquick)
|
add_subdirectory(examples/qtquick)
|
||||||
else()
|
endif()
|
||||||
|
if(KDDW_FRONTEND_QTWIDGETS)
|
||||||
add_subdirectory(examples/dockwidgets)
|
add_subdirectory(examples/dockwidgets)
|
||||||
add_subdirectory(examples/minimal)
|
add_subdirectory(examples/minimal)
|
||||||
add_subdirectory(examples/minimal-mdi)
|
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_separator COMMAND tst_separator)
|
||||||
add_test(NAME tst_floatingwindow COMMAND tst_floatingwindow)
|
add_test(NAME tst_floatingwindow COMMAND tst_floatingwindow)
|
||||||
add_test(NAME tst_dockwidget COMMAND tst_dockwidget)
|
add_test(NAME tst_dockwidget COMMAND tst_dockwidget)
|
||||||
|
add_test(NAME tst_multisplitter COMMAND tst_multisplitter)
|
||||||
|
|
||||||
if(NOT ${PROJECT_NAME}_QTQUICK)
|
if(KDDW_FRONTEND_QTWIDGETS)
|
||||||
# tst_multisplitter depends on QWidget
|
|
||||||
add_test(NAME tst_multisplitter COMMAND tst_multisplitter)
|
|
||||||
add_test(NAME tst_qtwidgets COMMAND tst_qtwidgets)
|
add_test(NAME tst_qtwidgets COMMAND tst_qtwidgets)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ add_definitions(-DQT_NO_SIGNALS_SLOTS_KEYWORDS
|
|||||||
-DQT_NO_FOREACH
|
-DQT_NO_FOREACH
|
||||||
)
|
)
|
||||||
|
|
||||||
set(DOCKSLIBS_SRCS
|
set(KDDW_BACKEND_SRCS
|
||||||
KDDockWidgets.cpp
|
KDDockWidgets.cpp
|
||||||
Config.cpp
|
Config.cpp
|
||||||
Config.h
|
Config.h
|
||||||
@@ -47,18 +47,15 @@ set(DOCKSLIBS_SRCS
|
|||||||
private/WindowBeingDragged_p.h
|
private/WindowBeingDragged_p.h
|
||||||
private/DragController.cpp
|
private/DragController.cpp
|
||||||
private/DragController_p.h
|
private/DragController_p.h
|
||||||
|
|
||||||
private/WidgetResizeHandler.cpp
|
private/WidgetResizeHandler.cpp
|
||||||
private/WidgetResizeHandler_p.h
|
private/WidgetResizeHandler_p.h
|
||||||
private/WindowZOrder_x11_p.h
|
private/WindowZOrder_x11_p.h
|
||||||
|
|
||||||
private/multisplitter/Item.cpp
|
private/multisplitter/Item.cpp
|
||||||
private/multisplitter/Item_p.h
|
private/multisplitter/Item_p.h
|
||||||
private/multisplitter/ItemFreeContainer.cpp
|
private/multisplitter/ItemFreeContainer.cpp
|
||||||
private/multisplitter/ItemFreeContainer_p.h
|
private/multisplitter/ItemFreeContainer_p.h
|
||||||
private/multisplitter/MultiSplitterConfig.cpp
|
private/multisplitter/MultiSplitterConfig.cpp
|
||||||
private/multisplitter/MultiSplitterConfig.h
|
private/multisplitter/MultiSplitterConfig.h
|
||||||
|
|
||||||
controllers/DockWidget.cpp
|
controllers/DockWidget.cpp
|
||||||
controllers/DockWidget.h
|
controllers/DockWidget.h
|
||||||
controllers/DropArea.cpp
|
controllers/DropArea.cpp
|
||||||
@@ -108,6 +105,10 @@ set(DOCKSLIBS_SRCS
|
|||||||
qtcommon/Platform_qt.h
|
qtcommon/Platform_qt.h
|
||||||
qtcommon/Window_qt.cpp
|
qtcommon/Window_qt.cpp
|
||||||
qtcommon/Window_qt.h
|
qtcommon/Window_qt.h
|
||||||
|
kddockwidgets_resources.qrc
|
||||||
|
)
|
||||||
|
|
||||||
|
SET(KDDW_FRONTEND_QTWIDGETS_SRCS
|
||||||
qtwidgets/Window_qtwidgets.cpp
|
qtwidgets/Window_qtwidgets.cpp
|
||||||
qtwidgets/Window_qtwidgets.h
|
qtwidgets/Window_qtwidgets.h
|
||||||
qtwidgets/Platform_qtwidgets.cpp
|
qtwidgets/Platform_qtwidgets.cpp
|
||||||
@@ -156,62 +157,7 @@ set(DOCKSLIBS_SRCS
|
|||||||
qtwidgets/ObjectViewer_p.h
|
qtwidgets/ObjectViewer_p.h
|
||||||
)
|
)
|
||||||
|
|
||||||
# add_library(kddockwidgets_backend STATIC ${KDDW_BACKEND_SRCS})
|
SET(KDDW_FRONTEND_QTQUICK_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
|
|
||||||
qtquick/Window_qtquick.cpp
|
qtquick/Window_qtquick.cpp
|
||||||
qtquick/Window_qtquick.h
|
qtquick/Window_qtquick.h
|
||||||
qtquick/Platform_qtquick.cpp
|
qtquick/Platform_qtquick.cpp
|
||||||
@@ -259,72 +205,44 @@ set(KDDW_QTQUICK_FRONTEND_SRCS
|
|||||||
kddockwidgets_qtquick.qrc
|
kddockwidgets_qtquick.qrc
|
||||||
)
|
)
|
||||||
|
|
||||||
if(${PROJECT_NAME}_QTQUICK)
|
set(DOCKS_INSTALLABLE_INCLUDES
|
||||||
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS}
|
docks_export.h
|
||||||
DockWidgetQuick.cpp
|
Config.h
|
||||||
DockWidgetQuick.h
|
ViewFactory.h
|
||||||
private/quick/DockWidgetInstantiator.cpp
|
# DockWidget.h
|
||||||
private/quick/DockWidgetInstantiator_p.h
|
KDDockWidgets.h
|
||||||
# private/quick/QWidgetAdapter_quick.cpp
|
Qt5Qt6Compat_p.h
|
||||||
# private/quick/QWidgetAdapter_quick_p.h
|
FocusScope.h
|
||||||
private/quick/FloatingWindowQuick.cpp
|
# QWidgetAdapter.h
|
||||||
private/quick/FloatingWindowQuick_p.h
|
LayoutSaver.h
|
||||||
# private/quick/TabWidgetQuick.cpp
|
MainWindowMDI.h
|
||||||
# private/quick/TabWidgetQuick_p.h
|
# MainWindow.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_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 ${KDDW_BACKEND_SRCS})
|
||||||
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS}
|
|
||||||
|
|
||||||
# MainWindow.cpp
|
if (KDDW_FRONTEND_QTWIDGETS)
|
||||||
# MainWindow.h
|
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS} ${KDDW_FRONTEND_QTWIDGETS_SRCS})
|
||||||
# DockWidget.h
|
endif()
|
||||||
# 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
|
|
||||||
)
|
|
||||||
|
|
||||||
set(DOCKS_INSTALLABLE_INCLUDES
|
if (KDDW_FRONTEND_QTQUICK)
|
||||||
${DOCKS_INSTALLABLE_INCLUDES}
|
set(DOCKSLIBS_SRCS ${DOCKSLIBS_SRCS} ${KDDW_FRONTEND_QTQUICK_SRCS})
|
||||||
# MainWindow.h
|
|
||||||
# DockWidget.h
|
|
||||||
# MDIArea.h
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#Generate C/C++ CamelCase forwarding headers (only public includes)
|
#Generate C/C++ CamelCase forwarding headers (only public includes)
|
||||||
@@ -345,9 +263,7 @@ ecm_generate_headers(camelcase_HEADERS
|
|||||||
MainWindowMDI
|
MainWindowMDI
|
||||||
)
|
)
|
||||||
|
|
||||||
set(RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/kddockwidgets_resources.qrc)
|
add_library(kddockwidgets ${KDDockWidgets_LIBRARY_MODE} ${DOCKSLIBS_SRCS} ${DOCKS_INSTALLABLE_INCLUDES} ${RESOURCES})
|
||||||
|
|
||||||
add_library(kddockwidgets ${KDDockWidgets_LIBRARY_MODE} ${DOCKSLIBS_SRCS} ${KDDW_QTQUICK_FRONTEND_SRCS} ${DOCKS_INSTALLABLE_INCLUDES} ${RESOURCES})
|
|
||||||
|
|
||||||
add_library(KDAB::kddockwidgets ALIAS kddockwidgets)
|
add_library(KDAB::kddockwidgets ALIAS kddockwidgets)
|
||||||
set_target_properties(kddockwidgets PROPERTIES OUTPUT_NAME "kddockwidgets${KDDockWidgets_LIBRARY_QTID}")
|
set_target_properties(kddockwidgets PROPERTIES OUTPUT_NAME "kddockwidgets${KDDockWidgets_LIBRARY_QTID}")
|
||||||
|
|||||||
Reference in New Issue
Block a user