123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- # Copyright 2017 The LevelDB Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file. See the AUTHORS file for names of contributors.
- cmake_minimum_required(VERSION 3.9)
- # Keep the version below in sync with the one in db.h
- project(leveldb VERSION 1.21.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)
- if (WIN32)
- set(LEVELDB_PLATFORM_NAME LEVELDB_PLATFORM_WINDOWS)
- # TODO(cmumford): Make UNICODE configurable for Windows.
- add_definitions(-D_UNICODE -DUNICODE)
- else (WIN32)
- set(LEVELDB_PLATFORM_NAME LEVELDB_PLATFORM_POSIX)
- endif (WIN32)
- 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)
- include(CheckLibraryExists)
- check_library_exists(crc32c crc32c_value "" HAVE_CRC32C)
- check_library_exists(snappy snappy_compress "" HAVE_SNAPPY)
- check_library_exists(tcmalloc malloc "" HAVE_TCMALLOC)
- include(CheckCXXSymbolExists)
- # Using check_cxx_symbol_exists() instead of check_c_symbol_exists() because
- # we're including the header from C++, and feature detection should use the same
- # compiler language that the project will use later. Principles aside, some
- # versions of do not expose fdatasync() in <unistd.h> in standard C mode
- # (-std=c11), but do expose the function in standard C++ mode (-std=c++11).
- check_cxx_symbol_exists(fdatasync "unistd.h" HAVE_FDATASYNC)
- check_cxx_symbol_exists(F_FULLFSYNC "fcntl.h" HAVE_FULLFSYNC)
- include(CheckCXXSourceCompiles)
- # Test whether -Wthread-safety is available. See
- # https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
- # -Werror is necessary because unknown attributes only generate warnings.
- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
- list(APPEND CMAKE_REQUIRED_FLAGS -Werror -Wthread-safety)
- check_cxx_source_compiles("
- struct __attribute__((lockable)) Lock {
- void Acquire() __attribute__((exclusive_lock_function()));
- void Release() __attribute__((unlock_function()));
- };
- struct ThreadSafeType {
- Lock lock_;
- int data_ __attribute__((guarded_by(lock_)));
- };
- int main() { return 0; }
- " HAVE_CLANG_THREAD_SAFETY)
- set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
- # Test whether C++17 __has_include is available.
- check_cxx_source_compiles("
- #if defined(__has_include) && __has_include(<string>)
- #include <string>
- #endif
- int main() { std::string str; return 0; }
- " HAVE_CXX17_HAS_INCLUDE)
- set(LEVELDB_PUBLIC_INCLUDE_DIR "include/leveldb")
- set(LEVELDB_PORT_CONFIG_DIR "include/port")
- configure_file(
- "${PROJECT_SOURCE_DIR}/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)
- # Only export LEVELDB_EXPORT symbols from the shared library.
- add_compile_options(-fvisibility=hidden)
- endif(BUILD_SHARED_LIBS)
- 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"
- # Only CMake 3.3+ supports PUBLIC sources in targets exported by "install".
- $<$<VERSION_GREATER:CMAKE_VERSION,3.2>:PUBLIC>
- "${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"
- )
- if (WIN32)
- target_sources(leveldb
- PRIVATE
- "${PROJECT_SOURCE_DIR}/util/env_windows.cc"
- "${PROJECT_SOURCE_DIR}/util/windows_logger.h"
- )
- else (WIN32)
- target_sources(leveldb
- PRIVATE
- "${PROJECT_SOURCE_DIR}/util/env_posix.cc"
- "${PROJECT_SOURCE_DIR}/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"
- )
- target_include_directories(leveldb
- PUBLIC
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
- )
- set_target_properties(leveldb
- PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
- target_compile_definitions(leveldb
- PRIVATE
- # Used by include/export.h when building shared libraries.
- LEVELDB_COMPILE_LIBRARY
- # Used by port/port.h.
- ${LEVELDB_PLATFORM_NAME}=1
- )
- if (NOT HAVE_CXX17_HAS_INCLUDE)
- target_compile_definitions(leveldb
- PRIVATE
- LEVELDB_HAS_PORT_CONFIG_H=1
- )
- endif(NOT HAVE_CXX17_HAS_INCLUDE)
- if(BUILD_SHARED_LIBS)
- target_compile_definitions(leveldb
- PUBLIC
- # Used by include/export.h.
- LEVELDB_SHARED_LIBRARY
- )
- endif(BUILD_SHARED_LIBS)
- if(HAVE_CLANG_THREAD_SAFETY)
- target_compile_options(leveldb
- PUBLIC
- -Werror -Wthread-safety)
- endif(HAVE_CLANG_THREAD_SAFETY)
- if(HAVE_CRC32C)
- target_link_libraries(leveldb crc32c)
- endif(HAVE_CRC32C)
- if(HAVE_SNAPPY)
- target_link_libraries(leveldb snappy)
- endif(HAVE_SNAPPY)
- if(HAVE_TCMALLOC)
- target_link_libraries(leveldb tcmalloc)
- endif(HAVE_TCMALLOC)
- # Needed by port_stdcxx.h
- find_package(Threads REQUIRED)
- target_link_libraries(leveldb Threads::Threads)
- add_executable(leveldbutil
- "${PROJECT_SOURCE_DIR}/db/leveldbutil.cc"
- )
- target_link_libraries(leveldbutil leveldb)
- if(LEVELDB_BUILD_TESTS)
- enable_testing()
- function(leveldb_test test_file)
- get_filename_component(test_target_name "${test_file}" NAME_WE)
- add_executable("${test_target_name}" "")
- 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"
- "${test_file}"
- )
- target_link_libraries("${test_target_name}" leveldb)
- target_compile_definitions("${test_target_name}"
- PRIVATE
- ${LEVELDB_PLATFORM_NAME}=1
- )
- if (NOT HAVE_CXX17_HAS_INCLUDE)
- target_compile_definitions("${test_target_name}"
- PRIVATE
- LEVELDB_HAS_PORT_CONFIG_H=1
- )
- endif(NOT HAVE_CXX17_HAS_INCLUDE)
- 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")
- 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"
- if (WIN32)
- leveldb_test("${PROJECT_SOURCE_DIR}/util/env_windows_test.cc")
- else (WIN32)
- leveldb_test("${PROJECT_SOURCE_DIR}/util/env_posix_test.cc")
- endif (WIN32)
- endif(NOT BUILD_SHARED_LIBS)
- endif(LEVELDB_BUILD_TESTS)
- if(LEVELDB_BUILD_BENCHMARKS)
- function(leveldb_benchmark bench_file)
- get_filename_component(bench_target_name "${bench_file}" NAME_WE)
- add_executable("${bench_target_name}" "")
- 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"
- "${bench_file}"
- )
- target_link_libraries("${bench_target_name}" leveldb)
- target_compile_definitions("${bench_target_name}"
- PRIVATE
- ${LEVELDB_PLATFORM_NAME}=1
- )
- if (NOT HAVE_CXX17_HAS_INCLUDE)
- target_compile_definitions("${bench_target_name}"
- PRIVATE
- LEVELDB_HAS_PORT_CONFIG_H=1
- )
- endif(NOT HAVE_CXX17_HAS_INCLUDE)
- endfunction(leveldb_benchmark)
- if(NOT BUILD_SHARED_LIBS)
- leveldb_benchmark("${PROJECT_SOURCE_DIR}/db/db_bench.cc")
- endif(NOT BUILD_SHARED_LIBS)
- check_library_exists(sqlite3 sqlite3_open "" HAVE_SQLITE3)
- if(HAVE_SQLITE3)
- leveldb_benchmark("${PROJECT_SOURCE_DIR}/doc/bench/db_bench_sqlite3.cc")
- target_link_libraries(db_bench_sqlite3 sqlite3)
- endif(HAVE_SQLITE3)
- # check_library_exists is insufficient here because the library names have
- # different manglings when compiled with clang or gcc, at least when installed
- # with Homebrew on Mac.
- set(OLD_CMAKE_REQURED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
- list(APPEND CMAKE_REQUIRED_LIBRARIES kyotocabinet)
- check_cxx_source_compiles("
- #include <kcpolydb.h>
- int main() {
- kyotocabinet::TreeDB* db = new kyotocabinet::TreeDB();
- delete db;
- return 0;
- }
- " HAVE_KYOTOCABINET)
- set(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQURED_LIBRARIES})
- if(HAVE_KYOTOCABINET)
- leveldb_benchmark("${PROJECT_SOURCE_DIR}/doc/bench/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}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- )
- 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
- )
- include(CMakePackageConfigHelpers)
- write_basic_package_version_file(
- "${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake"
- COMPATIBILITY SameMajorVersion
- )
- install(
- EXPORT leveldbTargets
- NAMESPACE leveldb::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/leveldb"
- )
- install(
- FILES
- "${PROJECT_SOURCE_DIR}/cmake/leveldbConfig.cmake"
- "${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake"
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/leveldb"
- )
- endif(LEVELDB_INSTALL)
|