1
+ cmake_minimum_required (VERSION 3.20)
2
+
3
+ project (Coverage VERSION 0.1 DESCRIPTION "Sample build code coverage with google tests" )
4
+
5
+ set (CMAKE_CXX_STANDARD 17)
6
+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
7
+ set (CMAKE_CXX_EXTENSIONS OFF )
8
+
9
+ if (NOT CMAKE_BUILD_TYPE )
10
+ set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Debug was set by default" FORCE)
11
+ endif ()
12
+
13
+ set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake ${CMAKE_MODULE_PATH} )
14
+
15
+ include (CMakeDependentOption)
16
+ option (WITH_TESTS "Build with tests" ON )
17
+ cmake_dependent_option(WITH_COVERAGE "Build with code coverage" ON "WITH_TESTS" ON )
18
+
19
+ if (WITH_COVERAGE)
20
+ include (CodeCoverage)
21
+ append_coverage_compiler_flags()
22
+ endif ()
23
+
24
+ set (HDR_FILES
25
+ include /resource .hpp
26
+ )
27
+
28
+ set (SRC_FILES
29
+ src/resource .cpp
30
+ )
31
+
32
+ set (SRC_MAIN_FILES
33
+ src/main.cpp
34
+ )
35
+
36
+ add_library (${PROJECT_NAME} _lib ${SRC_FILES} ${HDR_FILES} )
37
+ target_include_directories (${PROJECT_NAME} _lib PUBLIC include )
38
+
39
+ add_executable (${PROJECT_NAME} ${SRC_MAIN_FILES} )
40
+ target_link_libraries (${PROJECT_NAME} PRIVATE ${PROJECT_NAME} _lib)
41
+
42
+
43
+ if (WITH_TESTS)
44
+ find_package (GTest REQUIRED)
45
+ enable_testing ()
46
+ add_subdirectory (tests)
47
+
48
+ if (WITH_COVERAGE)
49
+ set (GCOVR_ADDITIONAL_ARGS --print-summary)
50
+ setup_target_for_coverage_gcovr_xml(
51
+ NAME "coverage-gcov"
52
+ EXECUTABLE ctest
53
+ BASE_DIRECTORY "${CMAKE_SOURCE_DIR} "
54
+ EXCLUDE ${CMAKE_SOURCE_DIR} /${SRC_MAIN_FILES} )
55
+
56
+ setup_target_for_coverage_lcov(
57
+ NAME "coverage-lcov"
58
+ EXECUTABLE ctest
59
+ BASE_DIRECTORY "${CMAKE_SOURCE_DIR} "
60
+ EXCLUDE ${CMAKE_SOURCE_DIR} /${SRC_MAIN_FILES} "/usr/*" )
61
+ endif ()
62
+ endif ()
0 commit comments