-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathCMakeLists.txt
69 lines (52 loc) · 1.89 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
cmake_minimum_required (VERSION 2.8.1)
cmake_policy(SET CMP0042 NEW)
set(PROJECT_NAME "TaskManager")
project (${PROJECT_NAME} CXX)
# Global variables
set(MODULE_DIR cmake)
set(SOURCE_DIR src)
set(INCLUDE_DIR include)
set(LIB_DIR lib)
set(LIB_INCLUDE_DIR "${INCLUDE_DIR}/${PROJECT_NAME}")
set(TEST_DIR test)
set(IMPLEMENTATION_DIR detail)
set(TESTER_NAME "${PROJECT_NAME}-tester")
set(LIB_NAME ${PROJECT_NAME})
set(CLANG_TIDY_CONFIG_SOURCE "${PROJECT_SOURCE_DIR}/.clang-tidy")
# CMake properties
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
set(PREDEFINED_TARGETS_FOLDER "CMake")
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/${MODULE_DIR})
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_BUILD_TYPE ${BUILD_TYPE})
message(STATUS "Building ${BUILD_TYPE} ${PROJECT_NAME}\n----------------------------")
# Check compiler version
include(CheckCompiler)
check_compiler()
add_subdirectory(lib)
# Set compiler flags
include(CompilerFlags)
# Source files.
include(Sources)
include_directories (${PROJECT_SOURCE_DIR})
include_directories (${PROJECT_SOURCE_DIR}/${INCLUDE_DIR})
# Add required unix libraries
add_library(${LIB_NAME} STATIC ${LIB_SOURCE_FILES})
if(TASK_MANAGER_BUILD_TESTS)
include(EnableTests)
endif()
if(TASK_MANAGER_ENABLE_CLANGTIDY AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
include(EnableClangTidy)
enable_clangtidy(SOURCES "${PROJECT_SOURCE_DIR}/${SOURCE_DIR}")
endif()
if(TASK_MANAGER_ENABLE_COVERAGE)
include(EnableTestCoverage)
add_coverage_flags(TARGETS ${BIN_NAME} ${LIB_NAME})
endif()
install(TARGETS ${LIB_NAME} DESTINATION ${LIB_DIR})
install(DIRECTORY ${LIB_INCLUDE_DIR} DESTINATION ${INCLUDE_DIR})
set(TASK_MANAGER_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${INCLUDE_DIR})
set(TASK_MANAGER_INCLUDE_DIRS ${TASK_MANAGER_INCLUDE_DIR} )
set(TASK_MANAGER_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR})
set(TASK_MANAGER_LIBRARY ${PROJECT_NAME})