1- cmake_minimum_required (VERSION 3.11...3.31 )
1+ cmake_minimum_required (VERSION 3.24 )
22
3- project (kvdbcpp VERSION 0.0 .0 LANGUAGES CXX )
3+ project (kvdb-cpp VERSION 0.1 .0 LANGUAGES CXX )
44
5- option (KVDB_ENABLE_TESTS "Build Tests" ON )
6- option (KVDB_BUILD_DEPS "Build Dependencies from source" ON )
5+ option (ORYX_KVDB_ENABLE_TESTS "Build Tests" ON )
6+ option (ORYX_KVDB_BUILD_DEPS "Build Dependencies from source" ON )
77
8- include (FetchContent )
9- include (GNUInstallDirs )
8+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
9+ if (NOT DEFINED CMAKE_CXX_STANDARD )
10+ set (CMAKE_CXX_STANDARD 20)
11+ endif ()
1012
13+ include (FetchContent )
1114
12- if (KVDB_BUILD_DEPS )
15+ if (ORYX_KVDB_BUILD_DEPS )
1316 message (STATUS "Building deps from source" )
1417
1518 FetchContent_Declare (
1619 reflectcpp
1720 GIT_REPOSITORY https://github.com/getml/reflect-cpp.git
18- GIT_TAG v0.15 .0
21+ GIT_TAG v0.19 .0
1922 OVERRIDE_FIND_PACKAGE
20- EXCLUDE_FROM_ALL
2123 )
2224
2325 FetchContent_Declare (
2426 leveldb
2527 GIT_REPOSITORY https://github.com/google/leveldb.git
26- GIT_TAG 1.23
28+ GIT_TAG ac691084fdc5546421a55b25e7653d450e5a25fb
2729 OVERRIDE_FIND_PACKAGE
28- EXCLUDE_FROM_ALL
2930 )
3031
32+ set (LEVELDB_BUILD_BENCHMARKS OFF )
33+ set (LEVELDB_BUILD_TESTS OFF )
3134 FetchContent_MakeAvailable (reflectcpp leveldb)
35+
36+ add_library (reflectcpp::reflectcpp ALIAS reflectcpp )
37+ add_library (leveldb::leveldb ALIAS leveldb )
38+
39+ install (TARGETS reflectcpp EXPORT ${PROJECT_NAME } -exports)
40+ install (TARGETS leveldb EXPORT ${PROJECT_NAME } -exports)
41+ else ()
42+ find_package (reflectcpp CONFIG REQUIRED )
43+ find_package (leveldb CONFIG REQUIRED )
3244endif ()
3345
34- find_package (reflectcpp )
35- find_package (leveldb )
36-
3746add_library (${PROJECT_NAME } INTERFACE )
3847add_library (${PROJECT_NAME } ::${PROJECT_NAME} ALIAS ${PROJECT_NAME } )
3948
4049target_link_libraries (${PROJECT_NAME }
4150 INTERFACE
42- reflectcpp
43- leveldb
51+ reflectcpp::reflectcpp
52+ leveldb::leveldb
4453)
4554
46- if (KVDB_ENABLE_TESTS)
47- set (test_exe ${PROJECT_NAME } _test)
48- add_executable (${test_exe} test /main.cpp test /read_write.cpp )
55+ if (ORYX_KVDB_ENABLE_TESTS)
56+ set (test_exe ${PROJECT_NAME } _tests)
57+ add_executable (${test_exe}
58+ tests/main.cpp
59+ tests/read_write.cpp
60+ )
4961 target_link_libraries (${test_exe} PRIVATE ${PROJECT_NAME } )
5062endif ()
5163
52-
53- target_include_directories (${PROJECT_NAME }
54- INTERFACE
55- "$<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >"
56- "$<INSTALL_INTERFACE :include >"
64+ target_include_directories (${PROJECT_NAME } INTERFACE
65+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
66+ $<INSTALL_INTERFACE :include >
5767)
5868
69+ target_compile_options (${PROJECT_NAME } INTERFACE $<$<CONFIG :Debug >:-Wall -Wextra >)
70+
71+ if (PROJECT_IS_TOP_LEVEL)
72+ include (GNUInstallDirs )
73+ include (CMakePackageConfigHelpers )
74+
75+ configure_package_config_file (
76+ cmake/${PROJECT_NAME}-config.cmake.in
77+ ${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME}-config.cmake
78+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME}
79+ )
80+
81+ write_basic_package_version_file (
82+ ${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME}-config-version.cmake
83+ VERSION ${PROJECT_VERSION }
84+ COMPATIBILITY SameMajorVersion
85+ )
86+
87+ install (
88+ FILES
89+ "${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -config.cmake"
90+ "${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -config-version.cmake"
91+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME } "
92+ )
93+
94+ file (GLOB_RECURSE KVDB_CPP_HEADERS RELATIVE ${CMAKE_CURRENT_LIST_DIR } "${CMAKE_CURRENT_LIST_DIR } /include/*" )
95+
96+ target_sources (${PROJECT_NAME }
97+ PUBLIC
98+ FILE_SET kvdb_cpp_headers
99+ TYPE HEADERS
100+ BASE_DIRS $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include > $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /include >
101+ FILES ${KVDB_CPP_HEADERS}
102+ )
103+
104+ install (
105+ TARGETS ${PROJECT_NAME }
106+ EXPORT ${PROJECT_NAME } -exports
107+ FILE_SET kvdb_cpp_headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
108+ )
109+
110+ install (
111+ EXPORT ${PROJECT_NAME } -exports
112+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME }
113+ NAMESPACE oryx::
114+ )
115+ endif ()
0 commit comments