diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 388 |
1 files changed, 220 insertions, 168 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index a65afbf..b829c94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,17 +4,23 @@ cmake_minimum_required(VERSION 3.9) # Keep the version below in sync with the one in db.h -project(leveldb VERSION 1.22.0 LANGUAGES C CXX) - -# This project can use C11, but will gracefully decay down to C89. -set(CMAKE_C_STANDARD 11) -set(CMAKE_C_STANDARD_REQUIRED OFF) -set(CMAKE_C_EXTENSIONS OFF) - -# This project requires C++11. -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) +project(leveldb VERSION 1.23.0 LANGUAGES C CXX) + +# C standard can be overridden when this is used as a sub-project. +if(NOT CMAKE_C_STANDARD) + # This project can use C11, but will gracefully decay down to C89. + set(CMAKE_C_STANDARD 11) + set(CMAKE_C_STANDARD_REQUIRED OFF) + set(CMAKE_C_EXTENSIONS OFF) +endif(NOT CMAKE_C_STANDARD) + +# C++ standard can be overridden when this is used as a sub-project. +if(NOT CMAKE_CXX_STANDARD) + # This project requires C++11. + set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif(NOT CMAKE_CXX_STANDARD) if (WIN32) set(LEVELDB_PLATFORM_NAME LEVELDB_PLATFORM_WINDOWS) @@ -28,9 +34,6 @@ option(LEVELDB_BUILD_TESTS "Build LevelDB's unit tests" ON) option(LEVELDB_BUILD_BENCHMARKS "Build LevelDB's benchmarks" ON) option(LEVELDB_INSTALL "Install LevelDB's header and library" ON) -include(TestBigEndian) -test_big_endian(LEVELDB_IS_BIG_ENDIAN) - include(CheckIncludeFile) check_include_file("unistd.h" HAVE_UNISTD_H) @@ -78,6 +81,10 @@ endif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-Wthread-safety HAVE_CLANG_THREAD_SAFETY) +# Used by googletest. +check_cxx_compiler_flag(-Wno-missing-field-initializers + LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS) + include(CheckCXXSourceCompiles) # Test whether C++17 __has_include is available. @@ -92,13 +99,13 @@ set(LEVELDB_PUBLIC_INCLUDE_DIR "include/leveldb") set(LEVELDB_PORT_CONFIG_DIR "include/port") configure_file( - "${PROJECT_SOURCE_DIR}/port/port_config.h.in" + "port/port_config.h.in" "${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h" ) include_directories( "${PROJECT_BINARY_DIR}/include" - "${PROJECT_SOURCE_DIR}" + "." ) if(BUILD_SHARED_LIBS) @@ -106,79 +113,82 @@ if(BUILD_SHARED_LIBS) add_compile_options(-fvisibility=hidden) endif(BUILD_SHARED_LIBS) +# Must be included before CMAKE_INSTALL_INCLUDEDIR is used. +include(GNUInstallDirs) + add_library(leveldb "") target_sources(leveldb PRIVATE "${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h" - "${PROJECT_SOURCE_DIR}/db/builder.cc" - "${PROJECT_SOURCE_DIR}/db/builder.h" - "${PROJECT_SOURCE_DIR}/db/c.cc" - "${PROJECT_SOURCE_DIR}/db/db_impl.cc" - "${PROJECT_SOURCE_DIR}/db/db_impl.h" - "${PROJECT_SOURCE_DIR}/db/db_iter.cc" - "${PROJECT_SOURCE_DIR}/db/db_iter.h" - "${PROJECT_SOURCE_DIR}/db/dbformat.cc" - "${PROJECT_SOURCE_DIR}/db/dbformat.h" - "${PROJECT_SOURCE_DIR}/db/dumpfile.cc" - "${PROJECT_SOURCE_DIR}/db/filename.cc" - "${PROJECT_SOURCE_DIR}/db/filename.h" - "${PROJECT_SOURCE_DIR}/db/log_format.h" - "${PROJECT_SOURCE_DIR}/db/log_reader.cc" - "${PROJECT_SOURCE_DIR}/db/log_reader.h" - "${PROJECT_SOURCE_DIR}/db/log_writer.cc" - "${PROJECT_SOURCE_DIR}/db/log_writer.h" - "${PROJECT_SOURCE_DIR}/db/memtable.cc" - "${PROJECT_SOURCE_DIR}/db/memtable.h" - "${PROJECT_SOURCE_DIR}/db/repair.cc" - "${PROJECT_SOURCE_DIR}/db/skiplist.h" - "${PROJECT_SOURCE_DIR}/db/snapshot.h" - "${PROJECT_SOURCE_DIR}/db/table_cache.cc" - "${PROJECT_SOURCE_DIR}/db/table_cache.h" - "${PROJECT_SOURCE_DIR}/db/version_edit.cc" - "${PROJECT_SOURCE_DIR}/db/version_edit.h" - "${PROJECT_SOURCE_DIR}/db/version_set.cc" - "${PROJECT_SOURCE_DIR}/db/version_set.h" - "${PROJECT_SOURCE_DIR}/db/write_batch_internal.h" - "${PROJECT_SOURCE_DIR}/db/write_batch.cc" - "${PROJECT_SOURCE_DIR}/port/port_stdcxx.h" - "${PROJECT_SOURCE_DIR}/port/port.h" - "${PROJECT_SOURCE_DIR}/port/thread_annotations.h" - "${PROJECT_SOURCE_DIR}/table/block_builder.cc" - "${PROJECT_SOURCE_DIR}/table/block_builder.h" - "${PROJECT_SOURCE_DIR}/table/block.cc" - "${PROJECT_SOURCE_DIR}/table/block.h" - "${PROJECT_SOURCE_DIR}/table/filter_block.cc" - "${PROJECT_SOURCE_DIR}/table/filter_block.h" - "${PROJECT_SOURCE_DIR}/table/format.cc" - "${PROJECT_SOURCE_DIR}/table/format.h" - "${PROJECT_SOURCE_DIR}/table/iterator_wrapper.h" - "${PROJECT_SOURCE_DIR}/table/iterator.cc" - "${PROJECT_SOURCE_DIR}/table/merger.cc" - "${PROJECT_SOURCE_DIR}/table/merger.h" - "${PROJECT_SOURCE_DIR}/table/table_builder.cc" - "${PROJECT_SOURCE_DIR}/table/table.cc" - "${PROJECT_SOURCE_DIR}/table/two_level_iterator.cc" - "${PROJECT_SOURCE_DIR}/table/two_level_iterator.h" - "${PROJECT_SOURCE_DIR}/util/arena.cc" - "${PROJECT_SOURCE_DIR}/util/arena.h" - "${PROJECT_SOURCE_DIR}/util/bloom.cc" - "${PROJECT_SOURCE_DIR}/util/cache.cc" - "${PROJECT_SOURCE_DIR}/util/coding.cc" - "${PROJECT_SOURCE_DIR}/util/coding.h" - "${PROJECT_SOURCE_DIR}/util/comparator.cc" - "${PROJECT_SOURCE_DIR}/util/crc32c.cc" - "${PROJECT_SOURCE_DIR}/util/crc32c.h" - "${PROJECT_SOURCE_DIR}/util/env.cc" - "${PROJECT_SOURCE_DIR}/util/filter_policy.cc" - "${PROJECT_SOURCE_DIR}/util/hash.cc" - "${PROJECT_SOURCE_DIR}/util/hash.h" - "${PROJECT_SOURCE_DIR}/util/logging.cc" - "${PROJECT_SOURCE_DIR}/util/logging.h" - "${PROJECT_SOURCE_DIR}/util/mutexlock.h" - "${PROJECT_SOURCE_DIR}/util/no_destructor.h" - "${PROJECT_SOURCE_DIR}/util/options.cc" - "${PROJECT_SOURCE_DIR}/util/random.h" - "${PROJECT_SOURCE_DIR}/util/status.cc" + "db/builder.cc" + "db/builder.h" + "db/c.cc" + "db/db_impl.cc" + "db/db_impl.h" + "db/db_iter.cc" + "db/db_iter.h" + "db/dbformat.cc" + "db/dbformat.h" + "db/dumpfile.cc" + "db/filename.cc" + "db/filename.h" + "db/log_format.h" + "db/log_reader.cc" + "db/log_reader.h" + "db/log_writer.cc" + "db/log_writer.h" + "db/memtable.cc" + "db/memtable.h" + "db/repair.cc" + "db/skiplist.h" + "db/snapshot.h" + "db/table_cache.cc" + "db/table_cache.h" + "db/version_edit.cc" + "db/version_edit.h" + "db/version_set.cc" + "db/version_set.h" + "db/write_batch_internal.h" + "db/write_batch.cc" + "port/port_stdcxx.h" + "port/port.h" + "port/thread_annotations.h" + "table/block_builder.cc" + "table/block_builder.h" + "table/block.cc" + "table/block.h" + "table/filter_block.cc" + "table/filter_block.h" + "table/format.cc" + "table/format.h" + "table/iterator_wrapper.h" + "table/iterator.cc" + "table/merger.cc" + "table/merger.h" + "table/table_builder.cc" + "table/table.cc" + "table/two_level_iterator.cc" + "table/two_level_iterator.h" + "util/arena.cc" + "util/arena.h" + "util/bloom.cc" + "util/cache.cc" + "util/coding.cc" + "util/coding.h" + "util/comparator.cc" + "util/crc32c.cc" + "util/crc32c.h" + "util/env.cc" + "util/filter_policy.cc" + "util/hash.cc" + "util/hash.h" + "util/logging.cc" + "util/logging.h" + "util/mutexlock.h" + "util/no_destructor.h" + "util/options.cc" + "util/random.h" + "util/status.cc" # Only CMake 3.3+ supports PUBLIC sources in targets exported by "install". $<$<VERSION_GREATER:CMAKE_VERSION,3.2>:PUBLIC> @@ -202,22 +212,22 @@ target_sources(leveldb if (WIN32) target_sources(leveldb PRIVATE - "${PROJECT_SOURCE_DIR}/util/env_windows.cc" - "${PROJECT_SOURCE_DIR}/util/windows_logger.h" + "util/env_windows.cc" + "util/windows_logger.h" ) else (WIN32) target_sources(leveldb PRIVATE - "${PROJECT_SOURCE_DIR}/util/env_posix.cc" - "${PROJECT_SOURCE_DIR}/util/posix_logger.h" + "util/env_posix.cc" + "util/posix_logger.h" ) endif (WIN32) # MemEnv is not part of the interface and could be pulled to a separate library. target_sources(leveldb PRIVATE - "${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.cc" - "${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.h" + "helpers/memenv/memenv.cc" + "helpers/memenv/memenv.h" ) target_include_directories(leveldb @@ -272,13 +282,84 @@ find_package(Threads REQUIRED) target_link_libraries(leveldb Threads::Threads) add_executable(leveldbutil - "${PROJECT_SOURCE_DIR}/db/leveldbutil.cc" + "db/leveldbutil.cc" ) target_link_libraries(leveldbutil leveldb) if(LEVELDB_BUILD_TESTS) enable_testing() + # Prevent overriding the parent project's compiler/linker settings on Windows. + set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + set(install_gtest OFF) + set(install_gmock OFF) + set(build_gmock ON) + + # This project is tested using GoogleTest. + add_subdirectory("third_party/googletest") + + # GoogleTest triggers a missing field initializers warning. + if(LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS) + set_property(TARGET gtest + APPEND PROPERTY COMPILE_OPTIONS -Wno-missing-field-initializers) + set_property(TARGET gmock + APPEND PROPERTY COMPILE_OPTIONS -Wno-missing-field-initializers) + endif(LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS) + + add_executable(leveldb_tests "") + target_sources(leveldb_tests + PRIVATE + # "db/fault_injection_test.cc" + # "issues/issue178_test.cc" + # "issues/issue200_test.cc" + # "issues/issue320_test.cc" + "${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h" + # "util/env_test.cc" + "util/status_test.cc" + "util/no_destructor_test.cc" + "util/testutil.cc" + "util/testutil.h" + ) + if(NOT BUILD_SHARED_LIBS) + target_sources(leveldb_tests + PRIVATE + "db/autocompact_test.cc" + "db/corruption_test.cc" + "db/db_test.cc" + "db/dbformat_test.cc" + "db/filename_test.cc" + "db/log_test.cc" + "db/recovery_test.cc" + "db/skiplist_test.cc" + "db/version_edit_test.cc" + "db/version_set_test.cc" + "db/write_batch_test.cc" + "helpers/memenv/memenv_test.cc" + "table/filter_block_test.cc" + "table/table_test.cc" + "util/arena_test.cc" + "util/bloom_test.cc" + "util/cache_test.cc" + "util/coding_test.cc" + "util/crc32c_test.cc" + "util/hash_test.cc" + "util/logging_test.cc" + ) + endif(NOT BUILD_SHARED_LIBS) + target_link_libraries(leveldb_tests leveldb gmock gtest gtest_main) + target_compile_definitions(leveldb_tests + PRIVATE + ${LEVELDB_PLATFORM_NAME}=1 + ) + if (NOT HAVE_CXX17_HAS_INCLUDE) + target_compile_definitions(leveldb_tests + PRIVATE + LEVELDB_HAS_PORT_CONFIG_H=1 + ) + endif(NOT HAVE_CXX17_HAS_INCLUDE) + + add_test(NAME "leveldb_tests" COMMAND "leveldb_tests") + function(leveldb_test test_file) get_filename_component(test_target_name "${test_file}" NAME_WE) @@ -286,14 +367,12 @@ if(LEVELDB_BUILD_TESTS) target_sources("${test_target_name}" PRIVATE "${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h" - "${PROJECT_SOURCE_DIR}/util/testharness.cc" - "${PROJECT_SOURCE_DIR}/util/testharness.h" - "${PROJECT_SOURCE_DIR}/util/testutil.cc" - "${PROJECT_SOURCE_DIR}/util/testutil.h" + "util/testutil.cc" + "util/testutil.h" "${test_file}" ) - target_link_libraries("${test_target_name}" leveldb) + target_link_libraries("${test_target_name}" leveldb gmock gtest) target_compile_definitions("${test_target_name}" PRIVATE ${LEVELDB_PLATFORM_NAME}=1 @@ -308,54 +387,25 @@ if(LEVELDB_BUILD_TESTS) add_test(NAME "${test_target_name}" COMMAND "${test_target_name}") endfunction(leveldb_test) - leveldb_test("${PROJECT_SOURCE_DIR}/db/c_test.c") - leveldb_test("${PROJECT_SOURCE_DIR}/db/fault_injection_test.cc") - - leveldb_test("${PROJECT_SOURCE_DIR}/issues/issue178_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/issues/issue200_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/issues/issue320_test.cc") - - leveldb_test("${PROJECT_SOURCE_DIR}/util/env_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/status_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/no_destructor_test.cc") + leveldb_test("db/c_test.c") if(NOT BUILD_SHARED_LIBS) - leveldb_test("${PROJECT_SOURCE_DIR}/db/autocompact_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/corruption_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/db_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/dbformat_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/filename_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/log_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/recovery_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/skiplist_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/version_edit_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/version_set_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/db/write_batch_test.cc") - - leveldb_test("${PROJECT_SOURCE_DIR}/helpers/memenv/memenv_test.cc") - - leveldb_test("${PROJECT_SOURCE_DIR}/table/filter_block_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/table/table_test.cc") - - leveldb_test("${PROJECT_SOURCE_DIR}/util/arena_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/bloom_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/cache_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/coding_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/crc32c_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/hash_test.cc") - leveldb_test("${PROJECT_SOURCE_DIR}/util/logging_test.cc") - # TODO(costan): This test also uses - # "${PROJECT_SOURCE_DIR}/util/env_{posix|windows}_test_helper.h" + # "util/env_{posix|windows}_test_helper.h" if (WIN32) - leveldb_test("${PROJECT_SOURCE_DIR}/util/env_windows_test.cc") + leveldb_test("util/env_windows_test.cc") else (WIN32) - leveldb_test("${PROJECT_SOURCE_DIR}/util/env_posix_test.cc") + leveldb_test("util/env_posix_test.cc") endif (WIN32) endif(NOT BUILD_SHARED_LIBS) endif(LEVELDB_BUILD_TESTS) if(LEVELDB_BUILD_BENCHMARKS) + # This project uses Google benchmark for benchmarking. + set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) + set(BENCHMARK_ENABLE_EXCEPTIONS OFF CACHE BOOL "" FORCE) + add_subdirectory("third_party/benchmark") + function(leveldb_benchmark bench_file) get_filename_component(bench_target_name "${bench_file}" NAME_WE) @@ -363,16 +413,14 @@ if(LEVELDB_BUILD_BENCHMARKS) target_sources("${bench_target_name}" PRIVATE "${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h" - "${PROJECT_SOURCE_DIR}/util/histogram.cc" - "${PROJECT_SOURCE_DIR}/util/histogram.h" - "${PROJECT_SOURCE_DIR}/util/testharness.cc" - "${PROJECT_SOURCE_DIR}/util/testharness.h" - "${PROJECT_SOURCE_DIR}/util/testutil.cc" - "${PROJECT_SOURCE_DIR}/util/testutil.h" + "util/histogram.cc" + "util/histogram.h" + "util/testutil.cc" + "util/testutil.h" "${bench_file}" ) - target_link_libraries("${bench_target_name}" leveldb) + target_link_libraries("${bench_target_name}" leveldb gmock gtest benchmark) target_compile_definitions("${bench_target_name}" PRIVATE ${LEVELDB_PLATFORM_NAME}=1 @@ -386,12 +434,12 @@ if(LEVELDB_BUILD_BENCHMARKS) endfunction(leveldb_benchmark) if(NOT BUILD_SHARED_LIBS) - leveldb_benchmark("${PROJECT_SOURCE_DIR}/benchmarks/db_bench.cc") + leveldb_benchmark("benchmarks/db_bench.cc") endif(NOT BUILD_SHARED_LIBS) check_library_exists(sqlite3 sqlite3_open "" HAVE_SQLITE3) if(HAVE_SQLITE3) - leveldb_benchmark("${PROJECT_SOURCE_DIR}/benchmarks/db_bench_sqlite3.cc") + leveldb_benchmark("benchmarks/db_bench_sqlite3.cc") target_link_libraries(db_bench_sqlite3 sqlite3) endif(HAVE_SQLITE3) @@ -411,13 +459,12 @@ int main() { " HAVE_KYOTOCABINET) set(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQURED_LIBRARIES}) if(HAVE_KYOTOCABINET) - leveldb_benchmark("${PROJECT_SOURCE_DIR}/benchmarks/db_bench_tree_db.cc") + leveldb_benchmark("benchmarks/db_bench_tree_db.cc") target_link_libraries(db_bench_tree_db kyotocabinet) endif(HAVE_KYOTOCABINET) endif(LEVELDB_BUILD_BENCHMARKS) if(LEVELDB_INSTALL) - include(GNUInstallDirs) install(TARGETS leveldb EXPORT leveldbTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -426,38 +473,43 @@ if(LEVELDB_INSTALL) ) install( FILES - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/c.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/cache.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/comparator.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/db.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/dumpfile.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/env.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/export.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/filter_policy.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/iterator.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/options.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/slice.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/status.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/table_builder.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/table.h" - "${PROJECT_SOURCE_DIR}/${LEVELDB_PUBLIC_INCLUDE_DIR}/write_batch.h" - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/leveldb + "${LEVELDB_PUBLIC_INCLUDE_DIR}/c.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/cache.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/comparator.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/db.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/dumpfile.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/env.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/export.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/filter_policy.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/iterator.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/options.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/slice.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/status.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/table_builder.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/table.h" + "${LEVELDB_PUBLIC_INCLUDE_DIR}/write_batch.h" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/leveldb" ) include(CMakePackageConfigHelpers) + configure_package_config_file( + "cmake/${PROJECT_NAME}Config.cmake.in" + "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" + ) write_basic_package_version_file( - "${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake" - COMPATIBILITY SameMajorVersion + "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake" + COMPATIBILITY SameMajorVersion ) install( EXPORT leveldbTargets NAMESPACE leveldb:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/leveldb" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) install( FILES - "${PROJECT_SOURCE_DIR}/cmake/leveldbConfig.cmake" - "${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/leveldb" + "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake" + "${PROJECT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) endif(LEVELDB_INSTALL) |