-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
109 lines (91 loc) · 3.13 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
cmake_minimum_required(VERSION 3.10)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
option(BUILD_TEST "Build the unit tests" OFF)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/release)
project(ruGroupAnalyser)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS
"-Wall \
-pedantic-errors -Wextra -Wcast-align \
-Wcast-qual \
-Wdisabled-optimization \
-Werror -Wfloat-equal -Wformat=2 \
-Wformat-nonliteral -Wformat-security \
-Wformat-y2k \
-Wimport -Winit-self \
-Winvalid-pch \
-Wmissing-field-initializers -Wmissing-format-attribute \
-Wmissing-include-dirs \
-Wpointer-arith \
-Wredundant-decls \
-Wstack-protector \
-Wstrict-aliasing=2 \
-Wunreachable-code -Wunused \
-Wunused-parameter \
-Wvariadic-macros \
-Wwrite-strings")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
set(CMAKE_CXX_FLAGS_DEBUG "-g -DDEBUG")
include_directories(src)
include_directories(lib/arg-parser/include)
add_subdirectory(src)
if(BUILD_TEST)
add_subdirectory(tst)
add_subdirectory(lib/googletest)
include_directories(lib/googletest/googletest/include)
endif()
set(CMAKE_EXE_LINKER_FLAGS " -static")
if(NOT CMAKE_WIN32_COMPILATION AND NOT CMAKE_WIN64_COMPILATION)
if(CMAKE_BUILD_TYPE STREQUAL Debug AND BUILD_TEST)
set(
MEMCHECK_SCRIPTS
runWithMemcheck.sh
)
file(
MAKE_DIRECTORY
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/tmp"
)
foreach( file_i ${MEMCHECK_SCRIPTS})
configure_file(
"${CMAKE_SOURCE_DIR}/scripts/${file_i}"
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/tmp/${file_i}"
COPYONLY
)
file(
COPY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/tmp/${file_i}"
DESTINATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}"
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
endforeach()
file(
REMOVE_RECURSE
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/tmp"
)
elseif(CMAKE_BUILD_TYPE STREQUAL Release AND BUILD_TEST)
set(
CALLGRIND_SCRIPTS
parseCallgrind.sh
runWithCallgrind.sh
)
file(MAKE_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/tmp")
foreach( file_i ${CALLGRIND_SCRIPTS})
configure_file(
"${CMAKE_SOURCE_DIR}/scripts/${file_i}"
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/tmp/${file_i}"
COPYONLY
)
file(
COPY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/tmp/${file_i}"
DESTINATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}"
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
endforeach()
file(
REMOVE_RECURSE
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/tmp"
)
endif()
endif()