Skip to content

Commit 7f27798

Browse files
committed
cleaned up CMakeLists.txt
bumped reflectcpp version to 0.21.0 directly return Open() if std::out_ptr is present
1 parent e29aa06 commit 7f27798

3 files changed

Lines changed: 53 additions & 43 deletions

File tree

CMakeLists.txt

Lines changed: 50 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_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

55
option(ORYX_KVDB_ENABLE_TESTS "Build Tests" ON)
66
option(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)
4140
else()
4241
find_package(reflectcpp CONFIG REQUIRED)
@@ -46,30 +45,49 @@ endif()
4645
add_library(${PROJECT_NAME} INTERFACE)
4746
add_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+
4957
target_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+
5581
if(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+
)
7391
endif()
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
)
120130
endif()

cmake/kvdb-cpp-config.cmake.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
@PACKAGE_INIT@
22

3-
include(${CMAKE_CURRENT_LIST_DIR}/kvdb-cpp-exports.cmake)
3+
include(${CMAKE_CURRENT_LIST_DIR}/kvdb-cpp-targets.cmake)
44

55
find_dependency(reflectcpp)
66
find_dependency(leveldb)

include/oryx/key_value_database.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,15 @@ class KeyValueDatabase {
8585
Close();
8686

8787
#ifdef __cpp_lib_out_ptr
88-
const auto status = leveldb::DB::Open(opts, name, std::out_ptr(handle_));
88+
return leveldb::DB::Open(opts, name, std::out_ptr(handle_));
8989
#else
9090
leveldb::DB* db;
9191
const auto status = leveldb::DB::Open(opts, name, &db);
9292
if (status.ok()) {
9393
handle_ = std::unique_ptr<leveldb::DB>(db);
9494
}
95-
#endif
9695
return status;
96+
#endif
9797
}
9898

9999
void Close() { handle_.reset(); }

0 commit comments

Comments
 (0)