-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
92 lines (77 loc) · 2.36 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
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
include(custom.cmake)
parse_git_tag()
project(comic_reader LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS
ON
CACHE INTERNAL "")
find_package(LibArchive REQUIRED)
find_package(Tweeny CONFIG REQUIRED)
find_package(WebP CONFIG REQUIRED)
find_package(wxWidgets CONFIG REQUIRED)
add_library(
common_lib STATIC
src/archive.cpp
src/comic_gallery.cpp
src/comic_viewer.cpp
src/comic.cpp
src/fuzzy.cpp
src/image_utils.cpp
src/viewport.cpp
src/wxUtil.cpp)
target_link_libraries(common_lib PUBLIC LibArchive::LibArchive tweeny
WebP::webp wx::core)
target_include_directories(common_lib PUBLIC "${CMAKE_SOURCE_DIR}/include")
add_executable(comic_reader WIN32 src/main.cpp)
target_link_libraries(comic_reader PRIVATE common_lib)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
target_sources(comic_reader PRIVATE resource/main.rc resource/main.manifest)
endif()
set(CPACK_GENERATOR "ZIP")
install(
TARGETS comic_reader
RUNTIME_DEPENDENCIES
PRE_EXCLUDE_REGEXES
"api-ms-"
"ext-ms-"
"hvsifiletrust"
"pdmutilities"
POST_EXCLUDE_REGEXES
".*system32/.*\\.dll"
RUNTIME DESTINATION .)
set(CPACK_PACKAGE_VERSION ${VERSION_STRING})
include(CPack)
# Setup Test, coverage and benchmarks
find_package(benchmark CONFIG REQUIRED)
find_package(GTest CONFIG REQUIRED)
set(TEST_SRCS src/archive_test.cpp src/comic_test.cpp src/fuzzy_test.cpp
src/lru_test.cpp)
add_executable(tests ${TEST_SRCS})
target_link_libraries(tests PRIVATE common_lib GTest::gtest
benchmark::benchmark GTest::gtest_main)
add_executable(benchmarks ${TEST_SRCS})
target_link_libraries(
benchmarks PRIVATE common_lib GTest::gtest benchmark::benchmark
benchmark::benchmark_main)
if(MSVC)
add_custom_target(
coverage
OpenCppCoverage
-q
--export_type
cobertura:${CMAKE_BINARY_DIR}/cov.xml
--sources
$<SHELL_PATH:${CMAKE_SOURCE_DIR}/src>
--sources
$<SHELL_PATH:${CMAKE_SOURCE_DIR}/include>
--modules
$<SHELL_PATH:${CMAKE_BINARY_DIR}>
--cover_children
--
$<TARGET_FILE:tests>
--gtest_output=xml:${CMAKE_BINARY_DIR}/test.xml
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
DEPENDS tests)
endif()