mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2024-12-25 23:51:33 +08:00
Added CMake project file
CMake has been announced as the build system of choice for Qt in the future so it's useful to provide a project file for it Also added the possibility to compile as a static library
This commit is contained in:
parent
9af6622466
commit
40a8d9e6b4
103
CMakeLists.txt
Normal file
103
CMakeLists.txt
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.3)
|
||||||
|
set(ads_VERSION "2.3.2")
|
||||||
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
project(QtAdvancedDockingSystem VERSION ${ads_VERSION})
|
||||||
|
option(BUILD_STATIC "Build the static library" OFF)
|
||||||
|
option(BUILD_EXAMPLES "Build the examples" ON)
|
||||||
|
set(REQUIRED_QT_VERSION 5.0.0)
|
||||||
|
find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
find_package(Qt5Widgets ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
message(STATUS "Found Qt ${Qt5Core_VERSION}")
|
||||||
|
set(ads_INCLUDE ${ads_INCLUDE} ${Qt5Core_INCLUDE_DIRS})
|
||||||
|
set(ads_INCLUDE ${ads_INCLUDE} "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||||
|
set(ads_LIBS ${ads_LIBS} ${Qt5Core_LIBRARIES})
|
||||||
|
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ${Qt5Core_COMPILE_DEFINITIONS})
|
||||||
|
set(ads_LIBS ${ads_LIBS} ${Qt5Gui_LIBRARIES})
|
||||||
|
set(ads_INCLUDE ${ads_INCLUDE} ${Qt5Gui_INCLUDE_DIRS})
|
||||||
|
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ${Qt5Gui_COMPILE_DEFINITIONS})
|
||||||
|
set(ads_LIBS ${ads_LIBS} ${Qt5Widgets_LIBRARIES})
|
||||||
|
set(ads_INCLUDE ${ads_INCLUDE} ${Qt5Widgets_INCLUDE_DIRS})
|
||||||
|
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS})
|
||||||
|
if(BUILD_STATIC)
|
||||||
|
set(CMAKE_STATIC_LIBRARY_SUFFIX "_static${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||||
|
endif()
|
||||||
|
set(ads_SRCS
|
||||||
|
src/ads_globals.cpp
|
||||||
|
src/DockAreaTabBar.cpp
|
||||||
|
src/DockAreaTitleBar.cpp
|
||||||
|
src/DockAreaWidget.cpp
|
||||||
|
src/DockContainerWidget.cpp
|
||||||
|
src/DockManager.cpp
|
||||||
|
src/DockOverlay.cpp
|
||||||
|
src/DockSplitter.cpp
|
||||||
|
src/DockWidget.cpp
|
||||||
|
src/DockWidgetTab.cpp
|
||||||
|
src/ElidingLabel.cpp
|
||||||
|
src/FloatingDockContainer.cpp
|
||||||
|
src/ads.qrc
|
||||||
|
)
|
||||||
|
set(ads_INSTALL_INCLUDE
|
||||||
|
src/ads_globals.h
|
||||||
|
src/DockAreaTabBar.h
|
||||||
|
src/DockAreaTitleBar.h
|
||||||
|
src/DockAreaWidget.h
|
||||||
|
src/DockContainerWidget.h
|
||||||
|
src/DockManager.h
|
||||||
|
src/DockOverlay.h
|
||||||
|
src/DockSplitter.h
|
||||||
|
src/DockWidget.h
|
||||||
|
src/DockWidgetTab.h
|
||||||
|
src/ElidingLabel.h
|
||||||
|
src/FloatingDockContainer.h
|
||||||
|
)
|
||||||
|
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||||
|
set(ads_PlatformDir "x64")
|
||||||
|
else()
|
||||||
|
set(ads_PlatformDir "x86")
|
||||||
|
endif()
|
||||||
|
if(BUILD_STATIC)
|
||||||
|
add_library(ads STATIC ${ads_SRCS})
|
||||||
|
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ADS_STATIC)
|
||||||
|
else()
|
||||||
|
add_library(ads SHARED ${ads_SRCS})
|
||||||
|
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ADS_SHARED_EXPORT)
|
||||||
|
endif()
|
||||||
|
install(FILES ${ads_INSTALL_INCLUDE}
|
||||||
|
DESTINATION include
|
||||||
|
COMPONENT headers
|
||||||
|
)
|
||||||
|
install(FILES
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/gnu-lgpl-v2.1.md"
|
||||||
|
DESTINATION license
|
||||||
|
COMPONENT license
|
||||||
|
)
|
||||||
|
install(TARGETS ads
|
||||||
|
EXPORT adsBinary
|
||||||
|
RUNTIME DESTINATION bin COMPONENT library
|
||||||
|
LIBRARY DESTINATION lib COMPONENT library
|
||||||
|
ARCHIVE DESTINATION lib COMPONENT library
|
||||||
|
)
|
||||||
|
target_include_directories(ads PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${ads_INCLUDE}>
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
)
|
||||||
|
target_link_libraries(ads PUBLIC ${ads_LIBS})
|
||||||
|
target_compile_definitions(ads PRIVATE ${ads_COMPILE_DEFINE})
|
||||||
|
set_target_properties(ads PROPERTIES
|
||||||
|
VERSION ${ads_VERSION}
|
||||||
|
EXPORT_NAME "Qt Advanced Docking System"
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin"
|
||||||
|
)
|
||||||
|
if(BUILD_EXAMPLES)
|
||||||
|
add_subdirectory(example)
|
||||||
|
add_subdirectory(demo)
|
||||||
|
endif()
|
||||||
|
|
48
demo/CMakeLists.txt
Normal file
48
demo/CMakeLists.txt
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.3)
|
||||||
|
set (CMAKE_CXX_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
project(ads_demo VERSION "1.0")
|
||||||
|
set(REQUIRED_QT_VERSION 5.0.0)
|
||||||
|
find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
find_package(Qt5Widgets ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
set(ads_demo_LIBS ${ads_demo_LIBS} ${Qt5Core_LIBRARIES})
|
||||||
|
set(ads_demo_INCLUDE ${ads_demo_INCLUDE} ${Qt5Core_INCLUDE_DIRS})
|
||||||
|
set(ads_demo_COMPILE_DEFINE ${ads_demo_COMPILE_DEFINE} ${Qt5Core_COMPILE_DEFINITIONS} )
|
||||||
|
set(ads_demo_LIBS ${ads_demo_LIBS} ${Qt5Gui_LIBRARIES})
|
||||||
|
set(ads_demo_INCLUDE ${ads_demo_INCLUDE} ${Qt5Gui_INCLUDE_DIRS})
|
||||||
|
set(ads_demo_COMPILE_DEFINE ${ads_demo_COMPILE_DEFINE} ${Qt5Gui_COMPILE_DEFINITIONS})
|
||||||
|
set(ads_demo_LIBS ${ads_demo_LIBS} ${Qt5Widgets_LIBRARIES})
|
||||||
|
set(ads_demo_INCLUDE ${ads_demo_INCLUDE} ${Qt5Widgets_INCLUDE_DIRS})
|
||||||
|
set(ads_demo_COMPILE_DEFINE ${ads_demo_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS})
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
set(ads_demo_SRCS
|
||||||
|
main.cpp
|
||||||
|
MainWindow.cpp
|
||||||
|
MainWindow.ui
|
||||||
|
main.qrc
|
||||||
|
)
|
||||||
|
add_executable(ads_demo WIN32 ${ads_demo_SRCS})
|
||||||
|
if(BUILD_STATIC)
|
||||||
|
set(ads_demo_DEFINE ${ads_demo_DEFINE} ADS_STATIC)
|
||||||
|
endif()
|
||||||
|
add_dependencies(ads_demo ads)
|
||||||
|
target_include_directories(ads_demo PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${ads_demo_INCLUDE}>
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
)
|
||||||
|
target_include_directories(ads_demo PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../src" ${ads_demo_INCLUDE})
|
||||||
|
target_link_libraries(ads_demo PRIVATE ads ${ads_demo_LIBS})
|
||||||
|
target_compile_definitions(ads_demo PRIVATE ${ads_demo_DEFINE})
|
||||||
|
set_target_properties(ads_demo PROPERTIES
|
||||||
|
VERSION "1.0"
|
||||||
|
SOVERSION 1
|
||||||
|
EXPORT_NAME "Qt Advanced Docking System Demo"
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/demo"
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/demo"
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin/demo"
|
||||||
|
)
|
46
example/CMakeLists.txt
Normal file
46
example/CMakeLists.txt
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.3)
|
||||||
|
set (CMAKE_CXX_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
project(ads_example VERSION "1.0")
|
||||||
|
set(REQUIRED_QT_VERSION 5.0.0)
|
||||||
|
find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
find_package(Qt5Widgets ${REQUIRED_QT_VERSION} REQUIRED)
|
||||||
|
set(ads_example_LIBS ${ads_example_LIBS} ${Qt5Core_LIBRARIES})
|
||||||
|
set(ads_example_INCLUDE ${ads_example_INCLUDE} ${Qt5Core_INCLUDE_DIRS})
|
||||||
|
set(ads_example_COMPILE_DEFINE ${ads_example_COMPILE_DEFINE} ${Qt5Core_COMPILE_DEFINITIONS} )
|
||||||
|
set(ads_example_LIBS ${ads_example_LIBS} ${Qt5Gui_LIBRARIES})
|
||||||
|
set(ads_example_INCLUDE ${ads_example_INCLUDE} ${Qt5Gui_INCLUDE_DIRS})
|
||||||
|
set(ads_example_COMPILE_DEFINE ${ads_example_COMPILE_DEFINE} ${Qt5Gui_COMPILE_DEFINITIONS})
|
||||||
|
set(ads_example_LIBS ${ads_example_LIBS} ${Qt5Widgets_LIBRARIES})
|
||||||
|
set(ads_example_INCLUDE ${ads_example_INCLUDE} ${Qt5Widgets_INCLUDE_DIRS})
|
||||||
|
set(ads_example_COMPILE_DEFINE ${ads_example_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS})
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
set(ads_example_SRCS
|
||||||
|
main.cpp
|
||||||
|
MainWindow.cpp
|
||||||
|
MainWindow.ui
|
||||||
|
)
|
||||||
|
add_executable(ads_example WIN32 ${ads_example_SRCS})
|
||||||
|
if(BUILD_STATIC)
|
||||||
|
set(ads_example_DEFINE ${ads_example_DEFINE} ADS_STATIC)
|
||||||
|
endif()
|
||||||
|
add_dependencies(ads_example ads)
|
||||||
|
target_include_directories(ads_example PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${ads_example_INCLUDE}>
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
)
|
||||||
|
target_include_directories(ads_example PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../src" ${ads_example_INCLUDE})
|
||||||
|
target_link_libraries(ads_example PRIVATE ads ${ads_example_LIBS})
|
||||||
|
target_compile_definitions(ads_example PRIVATE ${ads_example_DEFINE})
|
||||||
|
set_target_properties(ads_example PROPERTIES
|
||||||
|
VERSION "1.0"
|
||||||
|
SOVERSION 1
|
||||||
|
EXPORT_NAME "Qt Advanced Docking System Example"
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/example"
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/example"
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin/example"
|
||||||
|
)
|
@ -35,11 +35,15 @@
|
|||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
|
#ifndef ADS_STATIC
|
||||||
#ifdef ADS_SHARED_EXPORT
|
#ifdef ADS_SHARED_EXPORT
|
||||||
#define ADS_EXPORT Q_DECL_EXPORT
|
#define ADS_EXPORT Q_DECL_EXPORT
|
||||||
#else
|
#else
|
||||||
#define ADS_EXPORT Q_DECL_IMPORT
|
#define ADS_EXPORT Q_DECL_IMPORT
|
||||||
#endif
|
#endif
|
||||||
|
#else
|
||||||
|
#define ADS_EXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ADS_DEBUG_LEVEL 0
|
#define ADS_DEBUG_LEVEL 0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user