Skip to content

Commit 2570a88

Browse files
Merge pull request #17 from VSRonin/master
Added CMake project file
2 parents 9af6622 + 40a8d9e commit 2570a88

File tree

4 files changed

+201
-0
lines changed

4 files changed

+201
-0
lines changed

CMakeLists.txt

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
cmake_minimum_required(VERSION 3.3)
2+
set(ads_VERSION "2.3.2")
3+
set(CMAKE_CXX_STANDARD 11)
4+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
5+
set(CMAKE_CXX_EXTENSIONS OFF)
6+
set(CMAKE_AUTOMOC ON)
7+
set(CMAKE_AUTORCC ON)
8+
project(QtAdvancedDockingSystem VERSION ${ads_VERSION})
9+
option(BUILD_STATIC "Build the static library" OFF)
10+
option(BUILD_EXAMPLES "Build the examples" ON)
11+
set(REQUIRED_QT_VERSION 5.0.0)
12+
find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED)
13+
find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED)
14+
find_package(Qt5Widgets ${REQUIRED_QT_VERSION} REQUIRED)
15+
message(STATUS "Found Qt ${Qt5Core_VERSION}")
16+
set(ads_INCLUDE ${ads_INCLUDE} ${Qt5Core_INCLUDE_DIRS})
17+
set(ads_INCLUDE ${ads_INCLUDE} "${CMAKE_CURRENT_SOURCE_DIR}/src")
18+
set(ads_LIBS ${ads_LIBS} ${Qt5Core_LIBRARIES})
19+
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ${Qt5Core_COMPILE_DEFINITIONS})
20+
set(ads_LIBS ${ads_LIBS} ${Qt5Gui_LIBRARIES})
21+
set(ads_INCLUDE ${ads_INCLUDE} ${Qt5Gui_INCLUDE_DIRS})
22+
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ${Qt5Gui_COMPILE_DEFINITIONS})
23+
set(ads_LIBS ${ads_LIBS} ${Qt5Widgets_LIBRARIES})
24+
set(ads_INCLUDE ${ads_INCLUDE} ${Qt5Widgets_INCLUDE_DIRS})
25+
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS})
26+
if(BUILD_STATIC)
27+
set(CMAKE_STATIC_LIBRARY_SUFFIX "_static${CMAKE_STATIC_LIBRARY_SUFFIX}")
28+
endif()
29+
set(ads_SRCS
30+
src/ads_globals.cpp
31+
src/DockAreaTabBar.cpp
32+
src/DockAreaTitleBar.cpp
33+
src/DockAreaWidget.cpp
34+
src/DockContainerWidget.cpp
35+
src/DockManager.cpp
36+
src/DockOverlay.cpp
37+
src/DockSplitter.cpp
38+
src/DockWidget.cpp
39+
src/DockWidgetTab.cpp
40+
src/ElidingLabel.cpp
41+
src/FloatingDockContainer.cpp
42+
src/ads.qrc
43+
)
44+
set(ads_INSTALL_INCLUDE
45+
src/ads_globals.h
46+
src/DockAreaTabBar.h
47+
src/DockAreaTitleBar.h
48+
src/DockAreaWidget.h
49+
src/DockContainerWidget.h
50+
src/DockManager.h
51+
src/DockOverlay.h
52+
src/DockSplitter.h
53+
src/DockWidget.h
54+
src/DockWidgetTab.h
55+
src/ElidingLabel.h
56+
src/FloatingDockContainer.h
57+
)
58+
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
59+
set(ads_PlatformDir "x64")
60+
else()
61+
set(ads_PlatformDir "x86")
62+
endif()
63+
if(BUILD_STATIC)
64+
add_library(ads STATIC ${ads_SRCS})
65+
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ADS_STATIC)
66+
else()
67+
add_library(ads SHARED ${ads_SRCS})
68+
set(ads_COMPILE_DEFINE ${ads_COMPILE_DEFINE} ADS_SHARED_EXPORT)
69+
endif()
70+
install(FILES ${ads_INSTALL_INCLUDE}
71+
DESTINATION include
72+
COMPONENT headers
73+
)
74+
install(FILES
75+
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md"
76+
"${CMAKE_CURRENT_SOURCE_DIR}/gnu-lgpl-v2.1.md"
77+
DESTINATION license
78+
COMPONENT license
79+
)
80+
install(TARGETS ads
81+
EXPORT adsBinary
82+
RUNTIME DESTINATION bin COMPONENT library
83+
LIBRARY DESTINATION lib COMPONENT library
84+
ARCHIVE DESTINATION lib COMPONENT library
85+
)
86+
target_include_directories(ads PUBLIC
87+
$<BUILD_INTERFACE:${ads_INCLUDE}>
88+
$<INSTALL_INTERFACE:include>
89+
)
90+
target_link_libraries(ads PUBLIC ${ads_LIBS})
91+
target_compile_definitions(ads PRIVATE ${ads_COMPILE_DEFINE})
92+
set_target_properties(ads PROPERTIES
93+
VERSION ${ads_VERSION}
94+
EXPORT_NAME "Qt Advanced Docking System"
95+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
96+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
97+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin"
98+
)
99+
if(BUILD_EXAMPLES)
100+
add_subdirectory(example)
101+
add_subdirectory(demo)
102+
endif()
103+

demo/CMakeLists.txt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
cmake_minimum_required(VERSION 3.3)
2+
set (CMAKE_CXX_STANDARD 11)
3+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
4+
set(CMAKE_CXX_EXTENSIONS OFF)
5+
set(CMAKE_AUTOMOC ON)
6+
set(CMAKE_AUTOUIC ON)
7+
set(CMAKE_AUTORCC ON)
8+
project(ads_demo VERSION "1.0")
9+
set(REQUIRED_QT_VERSION 5.0.0)
10+
find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED)
11+
find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED)
12+
find_package(Qt5Widgets ${REQUIRED_QT_VERSION} REQUIRED)
13+
set(ads_demo_LIBS ${ads_demo_LIBS} ${Qt5Core_LIBRARIES})
14+
set(ads_demo_INCLUDE ${ads_demo_INCLUDE} ${Qt5Core_INCLUDE_DIRS})
15+
set(ads_demo_COMPILE_DEFINE ${ads_demo_COMPILE_DEFINE} ${Qt5Core_COMPILE_DEFINITIONS} )
16+
set(ads_demo_LIBS ${ads_demo_LIBS} ${Qt5Gui_LIBRARIES})
17+
set(ads_demo_INCLUDE ${ads_demo_INCLUDE} ${Qt5Gui_INCLUDE_DIRS})
18+
set(ads_demo_COMPILE_DEFINE ${ads_demo_COMPILE_DEFINE} ${Qt5Gui_COMPILE_DEFINITIONS})
19+
set(ads_demo_LIBS ${ads_demo_LIBS} ${Qt5Widgets_LIBRARIES})
20+
set(ads_demo_INCLUDE ${ads_demo_INCLUDE} ${Qt5Widgets_INCLUDE_DIRS})
21+
set(ads_demo_COMPILE_DEFINE ${ads_demo_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS})
22+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
23+
set(ads_demo_SRCS
24+
main.cpp
25+
MainWindow.cpp
26+
MainWindow.ui
27+
main.qrc
28+
)
29+
add_executable(ads_demo WIN32 ${ads_demo_SRCS})
30+
if(BUILD_STATIC)
31+
set(ads_demo_DEFINE ${ads_demo_DEFINE} ADS_STATIC)
32+
endif()
33+
add_dependencies(ads_demo ads)
34+
target_include_directories(ads_demo PUBLIC
35+
$<BUILD_INTERFACE:${ads_demo_INCLUDE}>
36+
$<INSTALL_INTERFACE:include>
37+
)
38+
target_include_directories(ads_demo PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../src" ${ads_demo_INCLUDE})
39+
target_link_libraries(ads_demo PRIVATE ads ${ads_demo_LIBS})
40+
target_compile_definitions(ads_demo PRIVATE ${ads_demo_DEFINE})
41+
set_target_properties(ads_demo PROPERTIES
42+
VERSION "1.0"
43+
SOVERSION 1
44+
EXPORT_NAME "Qt Advanced Docking System Demo"
45+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/demo"
46+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/demo"
47+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin/demo"
48+
)

example/CMakeLists.txt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
cmake_minimum_required(VERSION 3.3)
2+
set (CMAKE_CXX_STANDARD 11)
3+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
4+
set(CMAKE_CXX_EXTENSIONS OFF)
5+
set(CMAKE_AUTOMOC ON)
6+
set(CMAKE_AUTOUIC ON)
7+
project(ads_example VERSION "1.0")
8+
set(REQUIRED_QT_VERSION 5.0.0)
9+
find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED)
10+
find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED)
11+
find_package(Qt5Widgets ${REQUIRED_QT_VERSION} REQUIRED)
12+
set(ads_example_LIBS ${ads_example_LIBS} ${Qt5Core_LIBRARIES})
13+
set(ads_example_INCLUDE ${ads_example_INCLUDE} ${Qt5Core_INCLUDE_DIRS})
14+
set(ads_example_COMPILE_DEFINE ${ads_example_COMPILE_DEFINE} ${Qt5Core_COMPILE_DEFINITIONS} )
15+
set(ads_example_LIBS ${ads_example_LIBS} ${Qt5Gui_LIBRARIES})
16+
set(ads_example_INCLUDE ${ads_example_INCLUDE} ${Qt5Gui_INCLUDE_DIRS})
17+
set(ads_example_COMPILE_DEFINE ${ads_example_COMPILE_DEFINE} ${Qt5Gui_COMPILE_DEFINITIONS})
18+
set(ads_example_LIBS ${ads_example_LIBS} ${Qt5Widgets_LIBRARIES})
19+
set(ads_example_INCLUDE ${ads_example_INCLUDE} ${Qt5Widgets_INCLUDE_DIRS})
20+
set(ads_example_COMPILE_DEFINE ${ads_example_COMPILE_DEFINE} ${Qt5Widgets_COMPILE_DEFINITIONS})
21+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
22+
set(ads_example_SRCS
23+
main.cpp
24+
MainWindow.cpp
25+
MainWindow.ui
26+
)
27+
add_executable(ads_example WIN32 ${ads_example_SRCS})
28+
if(BUILD_STATIC)
29+
set(ads_example_DEFINE ${ads_example_DEFINE} ADS_STATIC)
30+
endif()
31+
add_dependencies(ads_example ads)
32+
target_include_directories(ads_example PUBLIC
33+
$<BUILD_INTERFACE:${ads_example_INCLUDE}>
34+
$<INSTALL_INTERFACE:include>
35+
)
36+
target_include_directories(ads_example PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../src" ${ads_example_INCLUDE})
37+
target_link_libraries(ads_example PRIVATE ads ${ads_example_LIBS})
38+
target_compile_definitions(ads_example PRIVATE ${ads_example_DEFINE})
39+
set_target_properties(ads_example PROPERTIES
40+
VERSION "1.0"
41+
SOVERSION 1
42+
EXPORT_NAME "Qt Advanced Docking System Example"
43+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/example"
44+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib/example"
45+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin/example"
46+
)

src/ads_globals.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,15 @@
3535
#include <QPixmap>
3636
#include <QWidget>
3737

38+
#ifndef ADS_STATIC
3839
#ifdef ADS_SHARED_EXPORT
3940
#define ADS_EXPORT Q_DECL_EXPORT
4041
#else
4142
#define ADS_EXPORT Q_DECL_IMPORT
4243
#endif
44+
#else
45+
#define ADS_EXPORT
46+
#endif
4347

4448
#define ADS_DEBUG_LEVEL 0
4549

0 commit comments

Comments
 (0)