forked from cristian-szabo-university/mandelbrot-cuda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
137 lines (104 loc) · 4.77 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
cmake_minimum_required (VERSION 3.2)
###############################################################################
#
# MAIN
#
###############################################################################
project (Coursework VERSION 1.0.0)
if (${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR})
message(FATAL_ERROR "In-tree builds are not supported; please run cmake in a separate build directory.")
endif ()
list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake/Modules")
list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
set (CMAKE_DEBUG_POSTFIX "_Debug")
set (TARGET_NAME "${CMAKE_PROJECT_NAME}Targets")
set (CONFIG_FILE "${CMAKE_PROJECT_NAME}-Config.cmake")
set (VERSION_FILE "${CMAKE_PROJECT_NAME}-Config-Version.cmake")
set (TARGET_FILE "${CMAKE_PROJECT_NAME}-Targets.cmake")
set (INCLUDE_INSTALL_DIR "Include")
set (LIBRARY_INSTALL_DIR "Library")
set (BINARY_INSTALL_DIR "Binary")
set (CONFIG_INSTALL_DIR "CMake")
###############################################################################
#
# EXTERNAL PROJECTS
#
###############################################################################
include (ExternalProject)
set_directory_properties (PROPERTIES EP_BASE "${CMAKE_BINARY_DIR}/Extern")
ExternalProject_Add (
Docopt
GIT_REPOSITORY "https://github.com/docopt/docopt.cpp.git"
GIT_TAG "master"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>")
ExternalProject_Get_Property (Docopt SOURCE_DIR)
ExternalProject_Get_Property (Docopt BINARY_DIR)
ExternalProject_Get_Property (Docopt INSTALL_DIR)
file(MAKE_DIRECTORY "${INSTALL_DIR}/include/docopt")
add_library (docopt SHARED IMPORTED)
set_property (TARGET docopt PROPERTY CXX_STANDARD 11)
set_target_properties (docopt PROPERTIES
IMPORTED_LOCATION "${INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}docopt${CMAKE_SHARED_LIBRARY_SUFFIX}"
IMPORTED_IMPLIB "${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}docopt${CMAKE_STATIC_LIBRARY_SUFFIX}"
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/docopt")
###############################################################################
#
# INTERNAL PROJECTS
#
###############################################################################
add_subdirectory ("${CMAKE_SOURCE_DIR}/Mandelbrot")
###############################################################################
#
# INSTALL
#
###############################################################################
include (CMakePackageConfigHelpers)
configure_package_config_file (
"${CMAKE_SOURCE_DIR}/ProjectConfig.cmake.inc" ${CONFIG_FILE}
INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
PATH_VARS INCLUDE_INSTALL_DIR LIBRARY_INSTALL_DIR BINARY_INSTALL_DIR)
write_basic_package_version_file (
${VERSION_FILE}
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion)
install (FILES "${CMAKE_BINARY_DIR}/${CONFIG_FILE}"
"${CMAKE_BINARY_DIR}/${VERSION_FILE}"
"${CMAKE_BINARY_DIR}/CMakeFiles/Export/CMake/${TARGET_FILE}"
"${CMAKE_BINARY_DIR}/CMakeFiles/Export/CMake/${CMAKE_PROJECT_NAME}-Targets-$<$<CONFIG:Debug>:debug>$<$<CONFIG:Release>:release>.cmake"
DESTINATION ${CONFIG_INSTALL_DIR}
COMPONENT Libraries)
install (FILES "$<TARGET_FILE_DIR:docopt>/$<TARGET_FILE_NAME:docopt>"
DESTINATION ${BINARY_INSTALL_DIR}
COMPONENT Applications)
install (EXPORT ${TARGET_NAME}
FILE ${TARGET_FILE}
NAMESPACE "${CMAKE_PROJECT_NAME}::"
DESTINATION ${CONFIG_INSTALL_DIR})
###############################################################################
#
# CPACK
#
###############################################################################
set (CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Project Description")
set (CPACK_PACKAGE_VENDOR "Author Name")
set (CPACK_PACKAGE_CONTACT ${CPACK_PACKAGE_VENDOR})
set (CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
set (CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set (CPACK_COMPONENT_HEADERS_DEPENDS Binaries Libraries)
set (CPACK_COMPONENT_APPLICATIONS_GROUP Runtime)
set (CPACK_COMPONENT_BINARIES_GROUP Development)
set (CPACK_COMPONENT_LIBRARIES_GROUP Development)
set (CPACK_COMPONENT_HEADERS_GROUP Development)
set (CPACK_ALL_INSTALL_TYPES Full Application Developer)
set (CPACK_COMPONENTS_ALL Applications Binaries Libraries Headers)
set (CPACK_COMPONENT_BINARIES_INSTALL_TYPES Application Developer Full)
set (CPACK_COMPONENT_LIBRARIES_INSTALL_TYPES Developer Full)
set (CPACK_COMPONENT_HEADERS_INSTALL_TYPES Developer Full)
set (CPACK_COMPONENT_APPLICATIONS_INSTALL_TYPES Application Full)
set (CPACK_PACKAGE_DIRECTORY "${PROJECT_SOURCE_DIR}/Package")
set (CPACK_STRIP_FILES FALSE)
include (CPack)