-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
62 lines (50 loc) · 1.59 KB
/
CMakeLists.txt
File metadata and controls
62 lines (50 loc) · 1.59 KB
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
cmake_minimum_required(VERSION 3.15)
project(http_server_library VERSION 1.0 LANGUAGES C CXX)
add_subdirectory(demo)
set(LIBRARY "server_library")
set(TEST_TARGET "server_tests_bin")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Override Debug flags
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 --coverage")
set(CMAKE_C_FLAGS_DEBUG "-g -O0 --coverage")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "--coverage")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "--coverage")
find_package(GTest CONFIG REQUIRED)
find_package(Threads REQUIRED)
# server library
add_library(${LIBRARY} STATIC
src/HttpServer.cpp
src/HttpParser.cpp
src/PathParams.cpp
include/HttpServer.h
include/AtomicQueue.h
include/constants.h
include/HttpParser.h
include/PathParams.h
include/Route.h
)
target_include_directories(${LIBRARY} PUBLIC include)
target_compile_features(${LIBRARY} PRIVATE cxx_std_17)
target_link_libraries(${LIBRARY} PRIVATE Threads::Threads)
# unit tests executable
enable_testing()
add_executable(${TEST_TARGET}
test/HttpServerTest.cpp
test/HttpParserTest.cpp
)
target_link_libraries(${TEST_TARGET}
PRIVATE ${LIBRARY} GTest::gtest_main
)
include(GoogleTest)
gtest_discover_tests(${TEST_TARGET})
# coverage target
# find required tools
find_program(LCOV lcov REQUIRED)
find_program(GENHTML genhtml REQUIRED)
# add coverage target for gcc build
add_custom_target(coverage
# gather data
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles/server_library.dir/src
COMMAND ${LCOV} -c -d . -o coverage.info
COMMAND ${GENHTML} coverage.info -o out
)