11cmake_minimum_required (VERSION 3.24 )
22
3- project (kvdb-cpp VERSION 0.1 .0 LANGUAGES CXX )
3+ project (kvdb-cpp VERSION 0.4 .0 LANGUAGES CXX )
44
55option (ORYX_KVDB_ENABLE_TESTS "Build Tests" ON )
66option (ORYX_KVDB_BUILD_DEPS "Build Dependencies from source" ON )
@@ -19,7 +19,7 @@ if(ORYX_KVDB_BUILD_DEPS)
1919 FetchContent_Declare (
2020 reflectcpp
2121 GIT_REPOSITORY https://github.com/getml/reflect-cpp.git
22- GIT_TAG 2a0fdeabe35bdab0e07e05d4f869ca88bd6d2b8c
22+ GIT_TAG v0.21.0
2323 OVERRIDE_FIND_PACKAGE
2424 )
2525
@@ -36,7 +36,6 @@ if(ORYX_KVDB_BUILD_DEPS)
3636 option (REFLECTCPP_INSTALL "Install ReflectCpp" ${ORYX_KVDB_INSTALL} )
3737 FetchContent_MakeAvailable (reflectcpp leveldb)
3838
39- add_library (reflectcpp::reflectcpp ALIAS reflectcpp )
4039 add_library (leveldb::leveldb ALIAS leveldb )
4140else ()
4241 find_package (reflectcpp CONFIG REQUIRED )
@@ -46,30 +45,49 @@ endif()
4645add_library (${PROJECT_NAME } INTERFACE )
4746add_library (${PROJECT_NAME } ::${PROJECT_NAME} ALIAS ${PROJECT_NAME } )
4847
48+ target_sources (${PROJECT_NAME }
49+ INTERFACE
50+ FILE_SET HEADERS
51+ BASE_DIRS
52+ "${CMAKE_CURRENT_SOURCE_DIR } /include"
53+ FILES
54+ "${CMAKE_CURRENT_SOURCE_DIR } /include/oryx/key_value_database.hpp"
55+ )
56+
4957target_link_libraries (${PROJECT_NAME }
5058 INTERFACE
5159 reflectcpp::reflectcpp
5260 leveldb::leveldb
5361)
5462
63+ target_include_directories (${PROJECT_NAME }
64+ INTERFACE
65+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
66+ $<INSTALL_INTERFACE :include >
67+ )
68+
69+ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
70+ target_compile_options (${PROJECT_NAME }
71+ INTERFACE
72+ $<$<CONFIG :Debug >:/W4 >
73+ )
74+ else ()
75+ target_compile_options (${PROJECT_NAME }
76+ INTERFACE
77+ $<$<CONFIG :Debug >:-Wall -Wextra >
78+ )
79+ endif ()
80+
5581if (ORYX_KVDB_ENABLE_TESTS)
5682 set (test_exe ${PROJECT_NAME } _tests)
5783 add_executable (${test_exe}
5884 tests/main.cpp
5985 tests/read_write.cpp
6086 )
61- target_link_libraries (${test_exe} PRIVATE ${PROJECT_NAME } )
62- endif ()
63-
64- target_include_directories (${PROJECT_NAME } INTERFACE
65- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
66- $<INSTALL_INTERFACE :include >
67- )
68-
69- if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
70- target_compile_options (${PROJECT_NAME } INTERFACE $<$<CONFIG :Debug >:/W4 >)
71- else ()
72- target_compile_options (${PROJECT_NAME } INTERFACE $<$<CONFIG :Debug >:-Wall -Wextra >)
87+ target_link_libraries (${test_exe}
88+ PRIVATE
89+ ${PROJECT_NAME }
90+ )
7391endif ()
7492
7593
@@ -78,43 +96,35 @@ if(ORYX_KVDB_INSTALL)
7896 include (CMakePackageConfigHelpers )
7997
8098 configure_package_config_file (
81- cmake/${PROJECT_NAME}-config.cmake.in
82- ${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME}-config.cmake
83- INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME}
99+ " ${ CMAKE_CURRENT_SOURCE_DIR } / cmake/${PROJECT_NAME } -config.cmake.in"
100+ " ${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -config.cmake"
101+ INSTALL_DESTINATION " ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME } "
84102 )
85103
86104 write_basic_package_version_file (
87- ${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME}-config-version.cmake
88- VERSION ${PROJECT_VERSION }
89- COMPATIBILITY SameMajorVersion
105+ "${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -version.cmake"
106+ COMPATIBILITY ExactVersion
90107 )
91108
92109 install (
93- FILES
94- "${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -config.cmake"
95- "${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -config-version.cmake"
96- DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME } "
97- )
98-
99- file (GLOB_RECURSE KVDB_CPP_HEADERS RELATIVE ${CMAKE_CURRENT_LIST_DIR } "${CMAKE_CURRENT_LIST_DIR } /include/*" )
100-
101- target_sources (${PROJECT_NAME }
102- PUBLIC
103- FILE_SET kvdb_cpp_headers
104- TYPE HEADERS
105- BASE_DIRS $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include > $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /include >
106- FILES ${KVDB_CPP_HEADERS}
110+ TARGETS ${PROJECT_NAME }
111+ EXPORT ${PROJECT_NAME } -targets
112+ FILE_SET HEADERS
107113 )
108114
109115 install (
110- TARGETS ${PROJECT_NAME }
111- EXPORT ${PROJECT_NAME } -exports
112- FILE_SET kvdb_cpp_headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
116+ FILES
117+ "${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -config.cmake"
118+ "${CMAKE_CURRENT_BINARY_DIR } /${PROJECT_NAME } -version.cmake"
119+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME } "
120+ COMPONENT ${PROJECT_NAME }
113121 )
114122
115123 install (
116- EXPORT ${PROJECT_NAME } -exports
117- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME }
124+ EXPORT ${PROJECT_NAME } -targets
125+ DESTINATION " ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME } "
118126 NAMESPACE oryx::
127+ FILE ${PROJECT_NAME } -targets .cmake
128+ COMPONENT ${PROJECT_NAME }
119129 )
120130endif ()
0 commit comments