-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
68 lines (58 loc) · 2.12 KB
/
CMakeLists.txt
File metadata and controls
68 lines (58 loc) · 2.12 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
63
64
65
66
67
68
cmake_minimum_required(VERSION 3.24)
project(sfdm C CXX)
option(sfdm_BUILD_TESTS "build Tests" OFF)
option(sfdm_WITH_ZXING_DECODER "build with ZXING decoder" ON)
option(sfdm_WITH_LIBDMTX_DECODER "build with LIBDMTX decoder" ON)
if (NOT sfdm_WITH_ZXING_DECODER AND NOT sfdm_WITH_LIBDMTX_DECODER)
message(FATAL_ERROR "Library has to be built with eiter ZXING or LIBDMTX")
endif ()
set(CMAKE_CXX_STANDARD 20)
if (sfdm_WITH_ZXING_DECODER)
find_package(ZXing REQUIRED)
endif ()
if (sfdm_WITH_LIBDMTX_DECODER)
find_package(libdmtx REQUIRED)
endif ()
add_library(sfdm)
include(cmake/create_config_header.cmake)
create_config_header(sfdm)
target_sources(sfdm
PRIVATE
$<$<BOOL:${sfdm_WITH_ZXING_DECODER}>:src/zxing_code_reader.cpp>
$<$<BOOL:${sfdm_WITH_LIBDMTX_DECODER}>:src/libdmtx_code_reader.cpp>
$<$<AND:$<BOOL:${sfdm_WITH_LIBDMTX_DECODER}>,$<BOOL:${sfdm_WITH_ZXING_DECODER}>>:src/libdmtx_zxing_combined_code_reader.cpp>
PUBLIC
FILE_SET headers
TYPE HEADERS
BASE_DIRS
include
${CMAKE_CURRENT_BINARY_DIR}/include
FILES
include/sfdm/decode_result.hpp
include/sfdm/icode_reader.hpp
include/sfdm/image_view.hpp
include/sfdm/sfdm.hpp
${CMAKE_CURRENT_BINARY_DIR}/include/sfdm/sfdm_config.hpp
$<$<BOOL:${sfdm_WITH_LIBDMTX_DECODER}>:include/sfdm/libdmtx_code_reader.hpp>
$<$<BOOL:${sfdm_WITH_ZXING_DECODER}>:include/sfdm/zxing_code_reader.hpp>
$<$<AND:$<BOOL:${sfdm_WITH_LIBDMTX_DECODER}>,$<BOOL:${sfdm_WITH_ZXING_DECODER}>>:include/sfdm/libdmtx_zxing_combined_code_reader.hpp>
)
set_target_properties(sfdm PROPERTIES
VERIFY_INTERFACE_HEADER_SETS ON
)
target_include_directories(sfdm
PUBLIC
include
)
target_compile_features(sfdm PUBLIC cxx_std_20)
target_link_libraries(sfdm
PRIVATE
$<$<BOOL:${sfdm_WITH_ZXING_DECODER}>:ZXing::ZXing>
$<$<BOOL:${sfdm_WITH_LIBDMTX_DECODER}>:libdmtx::libdmtx>)
target_compile_options(sfdm PUBLIC
$<$<CXX_COMPILER_ID:MSVC>:/EHsc>
)
if (sfdm_BUILD_TESTS)
add_subdirectory(test)
endif ()
install(TARGETS sfdm FILE_SET headers)