-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathCMakeLists.txt
67 lines (58 loc) · 1.48 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
cmake_minimum_required(VERSION 3.10)
project(NamedTypeTest CXX)
set(testSources
"main.cpp"
"tests.cpp"
"catch.hpp"
)
add_executable(${PROJECT_NAME} ${testSources})
target_include_directories(${PROJECT_NAME} PUBLIC "${NamedType_SOURCE_DIR}/include/")
if(ANDROID)
# This is a dependency of catch2:
target_link_libraries(${PROJECT_NAME} PUBLIC "log")
endif()
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)
if (MSVC)
string(REGEX REPLACE " /W[0-4]" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
string(REGEX REPLACE " /W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
target_compile_options(
${PROJECT_NAME}
PRIVATE
"/W4"
"/WX"
"/diagnostics:caret"
)
else()
target_compile_options(
${PROJECT_NAME}
PRIVATE
-Wall
-Wcast-align
-Wcast-qual
-Wconversion
-Wctor-dtor-privacy
-Wdouble-promotion
-Werror
-Wextra
-Wold-style-cast
-Woverloaded-virtual
-Wpedantic
-Wredundant-decls
-Wstack-protector
-Wzero-as-null-pointer-constant
-Wfloat-equal
-Wshadow
$<$<CXX_COMPILER_ID:GNU>:-Wlogical-op>
$<$<CXX_COMPILER_ID:GNU>:-Wnoexcept>
$<$<CXX_COMPILER_ID:GNU>:-Wstrict-null-sentinel>
$<$<CXX_COMPILER_ID:GNU>:-Wuseless-cast>
)
set(OLD_GNU FALSE)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
set(OLD_GNU TRUE)
endif()
if (NOT ${OLD_GNU})
target_compile_options(${PROJECT_NAME} PRIVATE -Weffc++)
endif()
endif()
add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME})