Skip to content

Commit 7a1903f

Browse files
committed
Reorganize CMakeLists.
1 parent f1c630a commit 7a1903f

File tree

7 files changed

+89
-97
lines changed

7 files changed

+89
-97
lines changed

CMakeLists.txt

+6-44
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,24 @@
1+
cmake_minimum_required(VERSION 2.8.12)
12
project(maxLibQt)
23

3-
cmake_minimum_required(VERSION 2.8)
4-
cmake_policy(SET CMP0020 NEW)
5-
cmake_policy(SET CMP0023 OLD)
6-
if(POLICY CMP0042)
7-
cmake_policy(SET CMP0042 NEW)
8-
endif()
9-
if(POLICY CMP0043)
10-
cmake_policy(SET CMP0043 NEW)
11-
endif()
12-
if(POLICY CMP0054)
13-
cmake_policy(SET CMP0054 NEW)
14-
endif()
15-
if(POLICY CMP0058)
16-
cmake_policy(SET CMP0058 NEW) # for ninja
17-
endif()
18-
194
set(CMAKE_COLOR_MAKEFILE ON)
20-
set(CMAKE_CXX_STANDARD 11)
215

226
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
237
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
248
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
259

26-
set(SRC_DIR "${PROJECT_SOURCE_DIR}/src")
27-
set(DOC_SRC_DIR "${PROJECT_SOURCE_DIR}/doc")
10+
set(SRC_DIR "${PROJECT_SOURCE_DIR}/src")
11+
set(DOC_DIR "${PROJECT_SOURCE_DIR}/doc")
2812

2913
find_package(Qt5Core)
30-
find_package(Qt5Widgets)
31-
3214
if(Qt5Core_FOUND)
3315
message(STATUS "Qt Version: ${Qt5Core_VERSION}")
3416
else()
3517
message(FATAL_ERROR "Qt not found!")
3618
endif()
3719

38-
add_definitions(-DQT_USE_QSTRINGBUILDER)
39-
40-
set(SRC_SUBDIRS
41-
${SRC_DIR}/core
42-
${SRC_DIR}/itemmodels
43-
${SRC_DIR}/widgets
44-
)
45-
46-
include_directories(${SRC_SUBDIRS})
47-
48-
set(BUILT_LIBRARIES) # populated by subprojects
49-
50-
foreach(sub_dir ${SRC_SUBDIRS})
51-
add_subdirectory(${sub_dir})
52-
endforeach(sub_dir)
53-
54-
# maxLibQt is a "dummy" lib so that other binaries could link
55-
# to this single one instead of the individual libs.
56-
# The maxLibQt target cannot be built specifically.
57-
add_library(maxLibQt INTERFACE)
58-
target_include_directories(maxLibQt INTERFACE ${SRC_SUBDIRS})
59-
target_link_libraries(maxLibQt INTERFACE ${BUILT_LIBRARIES})
20+
## Subprojects
21+
add_subdirectory("${SRC_DIR}")
6022

6123
## Doxymentation
62-
add_subdirectory(${DOC_SRC_DIR})
24+
add_subdirectory("${DOC_DIR}")

doc/CMakeLists.txt

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
## Generate Doxygen docs from source
22

3-
set(DOC_OUTPUT_DIR ${DOC_SRC_DIR} CACHE STRING "Documentation output path.")
3+
set(DOC_OUTPUT_DIR "${DOC_DIR}" CACHE STRING "Documentation output path.")
44

55
find_package(Doxygen)
66

7-
if(DOXYGEN_FOUND)
8-
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
7+
if(DOXYGEN_FOUND AND DOC_DIR AND DOC_OUTPUT_DIR)
8+
set(DOXYGEN_IN ${DOC_DIR}/Doxyfile.in)
99
set(DOXYGEN_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
1010

1111
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
@@ -17,17 +17,18 @@ if(DOXYGEN_FOUND)
1717
VERBATIM )
1818

1919
## clean
20+
file(TO_NATIVE_PATH "html/*.html html/*.js html/*.css html/*.png" DOCFILES)
2021
if(WIN32)
2122
set(RM del /Q)
23+
separate_arguments(DOCFILES WINDOWS_COMMAND "${DOCFILES}")
2224
else()
2325
set(RM rm)
26+
separate_arguments(DOCFILES UNIX_COMMAND "${DOCFILES}")
2427
endif()
25-
file(TO_NATIVE_PATH "html/*.*" DOCFILES)
2628
add_custom_target(maxLibQt-doxygen-clean
27-
COMMAND ${RM} "${DOCFILES}"
29+
COMMAND ${RM} ${DOCFILES}
2830
COMMAND ${CMAKE_COMMAND} -E remove_directory html/search
2931
WORKING_DIRECTORY ${DOC_OUTPUT_DIR}
32+
COMMENT "Deleting stale documentation files."
3033
VERBATIM )
31-
#add_dependencies(maxLibQt-doxygen maxLibQt-doxygen-clean)
32-
3334
endif()

doc/Doxyfile.in

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# Doxyfile 1.8.13
22

3-
@INCLUDE = @DOC_SRC_DIR@/Doxyfile
3+
@INCLUDE = @DOC_DIR@/Doxyfile
44

55
OUTPUT_DIRECTORY = @DOC_OUTPUT_DIR@
66

77
QUIET = YES
88
WARNINGS = NO
99
WARN_IF_UNDOCUMENTED = NO
1010
WARN_IF_DOC_ERROR = NO
11+
HTML_TIMESTAMP = NO

src/CMakeLists.txt

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
cmake_minimum_required(VERSION 2.8.12)
2+
project(maxLibQt)
3+
4+
set(SRC_SUBDIRS
5+
core
6+
itemmodels
7+
widgets
8+
)
9+
10+
set(BUILT_LIBRARIES) # populated by subprojects
11+
12+
foreach(sub_dir ${SRC_SUBDIRS})
13+
add_subdirectory(${sub_dir})
14+
endforeach(sub_dir)
15+
16+
# maxLibQt is a "dummy" lib so that other binaries could link
17+
# to this single one instead of the individual libs.
18+
# The maxLibQt target cannot be built specifically.
19+
if (BUILT_LIBRARIES)
20+
add_library(${PROJECT_NAME} INTERFACE)
21+
target_link_libraries(${PROJECT_NAME} INTERFACE ${BUILT_LIBRARIES})
22+
endif()

src/core/CMakeLists.txt

+15-13
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
1-
set(THIS_BIN_NAME maxLibQtCore)
2-
3-
project(${THIS_BIN_NAME})
4-
cmake_minimum_required(VERSION 2.8)
1+
cmake_minimum_required(VERSION 2.8.12)
52
cmake_policy(SET CMP0020 NEW)
6-
if(POLICY CMP0043)
7-
cmake_policy(SET CMP0043 NEW)
8-
endif()
93
set(CMAKE_CXX_STANDARD 11)
4+
if (CMAKE_VERSION VERSION_LESS "3.1" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
5+
list(APPEND CMAKE_CXX_FLAGS --std=gnu++11)
6+
endif ()
7+
108
find_package(Qt5Core)
11-
add_definitions(-DQT_USE_QSTRINGBUILDER)
9+
10+
project(maxLibQtCore)
1211

1312
set(SRCS
14-
AppDebugMessageHandler.cpp
13+
"${CMAKE_CURRENT_LIST_DIR}/AppDebugMessageHandler.cpp"
1514
)
1615

1716
set(HDRS
18-
AppDebugMessageHandler.h
17+
"${CMAKE_CURRENT_LIST_DIR}/AppDebugMessageHandler.h"
1918
)
2019

2120
qt5_wrap_cpp(SRCS ${HDRS})
2221

23-
add_library(${THIS_BIN_NAME} ${SRCS} ${HDRS})
24-
qt5_use_modules(${THIS_BIN_NAME} Core)
22+
add_library(${PROJECT_NAME} ${SRCS} ${HDRS})
23+
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core)
24+
target_compile_definitions(${PROJECT_NAME} PRIVATE QT_USE_QSTRINGBUILDER)
25+
target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
2526

26-
set(BUILT_LIBRARIES ${BUILT_LIBRARIES} ${THIS_BIN_NAME} PARENT_SCOPE)
27+
# need to push this upstream
28+
set(BUILT_LIBRARIES ${BUILT_LIBRARIES} ${PROJECT_NAME} PARENT_SCOPE)

src/itemmodels/CMakeLists.txt

+15-13
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
1-
set(THIS_BIN_NAME maxLibQtItemModels)
2-
3-
project(${THIS_BIN_NAME})
4-
cmake_minimum_required(VERSION 2.8)
1+
cmake_minimum_required(VERSION 2.8.12)
52
cmake_policy(SET CMP0020 NEW)
6-
if(POLICY CMP0043)
7-
cmake_policy(SET CMP0043 NEW)
8-
endif()
93
set(CMAKE_CXX_STANDARD 11)
4+
if (CMAKE_VERSION VERSION_LESS "3.1" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
5+
list(APPEND CMAKE_CXX_FLAGS --std=gnu++11)
6+
endif ()
7+
108
find_package(Qt5Core)
11-
add_definitions(-DQT_USE_QSTRINGBUILDER)
9+
10+
project(maxLibQtItemModels)
1211

1312
set(SRCS
14-
GroupedItemsProxyModel.cpp
13+
"${CMAKE_CURRENT_LIST_DIR}/GroupedItemsProxyModel.cpp"
1514
)
1615

1716
set(HDRS
18-
GroupedItemsProxyModel.h
17+
"${CMAKE_CURRENT_LIST_DIR}/GroupedItemsProxyModel.h"
1918
)
2019

2120
qt5_wrap_cpp(SRCS ${HDRS})
2221

23-
add_library(${THIS_BIN_NAME} ${SRCS} ${HDRS})
24-
qt5_use_modules(${THIS_BIN_NAME} Core)
22+
add_library(${PROJECT_NAME} ${SRCS} ${HDRS})
23+
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core)
24+
target_compile_definitions(${PROJECT_NAME} PRIVATE QT_USE_QSTRINGBUILDER)
25+
target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
2526

26-
set(BUILT_LIBRARIES ${BUILT_LIBRARIES} ${THIS_BIN_NAME} PARENT_SCOPE)
27+
# need to push this upstream
28+
set(BUILT_LIBRARIES ${BUILT_LIBRARIES} ${PROJECT_NAME} PARENT_SCOPE)

src/widgets/CMakeLists.txt

+21-19
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,35 @@
1-
set(THIS_BIN_NAME maxLibQtWidgets)
2-
3-
project(${THIS_BIN_NAME})
4-
cmake_minimum_required(VERSION 2.8)
1+
cmake_minimum_required(VERSION 2.8.12)
52
cmake_policy(SET CMP0020 NEW)
6-
if(POLICY CMP0043)
7-
cmake_policy(SET CMP0043 NEW)
8-
endif()
93
set(CMAKE_CXX_STANDARD 11)
4+
if (CMAKE_VERSION VERSION_LESS "3.1" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
5+
list(APPEND CMAKE_CXX_FLAGS --std=gnu++11)
6+
endif ()
7+
108
find_package(Qt5Core)
119
find_package(Qt5Widgets)
12-
add_definitions(-DQT_USE_QSTRINGBUILDER)
10+
11+
project(maxLibQtWidgets)
1312

1413
set(SRCS
15-
ExportableTableView.cpp
16-
ScrollableMessageBox.cpp
17-
TimerEdit.cpp
18-
TreeComboBox.cpp
14+
"${CMAKE_CURRENT_LIST_DIR}/ExportableTableView.cpp"
15+
"${CMAKE_CURRENT_LIST_DIR}/ScrollableMessageBox.cpp"
16+
"${CMAKE_CURRENT_LIST_DIR}/TimerEdit.cpp"
17+
"${CMAKE_CURRENT_LIST_DIR}/TreeComboBox.cpp"
1918
)
2019

2120
set(HDRS
22-
ExportableTableView.h
23-
ScrollableMessageBox.h
24-
TimerEdit.h
25-
TreeComboBox.h
21+
"${CMAKE_CURRENT_LIST_DIR}/ExportableTableView.h"
22+
"${CMAKE_CURRENT_LIST_DIR}/ScrollableMessageBox.h"
23+
"${CMAKE_CURRENT_LIST_DIR}/TimerEdit.h"
24+
"${CMAKE_CURRENT_LIST_DIR}/TreeComboBox.h"
2625
)
2726

2827
qt5_wrap_cpp(SRCS ${HDRS})
2928

30-
add_library(${THIS_BIN_NAME} ${SRCS} ${HDRS})
31-
qt5_use_modules(${THIS_BIN_NAME} Core Widgets)
29+
add_library(${PROJECT_NAME} ${SRCS} ${HDRS})
30+
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Widgets)
31+
target_compile_definitions(${PROJECT_NAME} PRIVATE QT_USE_QSTRINGBUILDER)
32+
target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_LIST_DIR}")
3233

33-
set(BUILT_LIBRARIES ${BUILT_LIBRARIES} ${THIS_BIN_NAME} PARENT_SCOPE)
34+
# need to push this upstream
35+
set(BUILT_LIBRARIES ${BUILT_LIBRARIES} ${PROJECT_NAME} PARENT_SCOPE)

0 commit comments

Comments
 (0)