Skip to content

Commit 4d07960

Browse files
author
Andrey Masloboev
committed
added sources files
1 parent e4bc56e commit 4d07960

File tree

7 files changed

+881
-0
lines changed

7 files changed

+881
-0
lines changed

CMakeLists.txt

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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

Comments
 (0)