CMake: Add support for CMake packages
Summary: Adds support for CMake packages: https://cmake.org/cmake/help/v3.9/manual/cmake-packages.7.html#creating-packages. This allow using RocksDB by other CMake projects this way: ``` cmake_minimum_required(VERSION 3.5) project(rdbt) find_package(RocksDB CONFIG) add_executable(rdbt test.cpp) target_link_libraries(rdbt PRIVATE RocksDB::rocksdb) ``` Closes https://github.com/facebook/rocksdb/pull/2773 Differential Revision: D5722587 Pulled By: sagar0 fbshipit-source-id: 0d90dc4a77b42a617cdbe1348a370e719c282b87
This commit is contained in:
parent
5444345588
commit
c21ea8f7a6
@ -648,9 +648,54 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
install(TARGETS ${ROCKSDB_STATIC_LIB} COMPONENT devel ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
include(CMakePackageConfigHelpers)
|
||||||
install(TARGETS ${ROCKSDB_SHARED_LIB} COMPONENT runtime DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
install(DIRECTORY include/rocksdb COMPONENT devel DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
set(package_config_destination ${CMAKE_INSTALL_LIBDIR}/cmake/rocksdb)
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
${CMAKE_SOURCE_DIR}/cmake/RocksDBConfig.cmake.in RocksDBConfig.cmake
|
||||||
|
INSTALL_DESTINATION ${package_config_destination}
|
||||||
|
)
|
||||||
|
|
||||||
|
write_basic_package_version_file(
|
||||||
|
RocksDBConfigVersion.cmake
|
||||||
|
VERSION ${ROCKSDB_VERSION}
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
install(DIRECTORY include/rocksdb COMPONENT devel DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${ROCKSDB_STATIC_LIB}
|
||||||
|
EXPORT RocksDBTargets
|
||||||
|
COMPONENT devel
|
||||||
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${ROCKSDB_SHARED_LIB}
|
||||||
|
EXPORT RocksDBTargets
|
||||||
|
COMPONENT runtime
|
||||||
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
EXPORT RocksDBTargets
|
||||||
|
COMPONENT devel
|
||||||
|
DESTINATION ${package_config_destination}
|
||||||
|
NAMESPACE RocksDB::
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfig.cmake
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfigVersion.cmake
|
||||||
|
COMPONENT devel
|
||||||
|
DESTINATION ${package_config_destination}
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(WITH_TESTS "build with tests" ON)
|
option(WITH_TESTS "build with tests" ON)
|
||||||
|
3
cmake/RocksDBConfig.cmake.in
Normal file
3
cmake/RocksDBConfig.cmake.in
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/RocksDBTargets.cmake")
|
||||||
|
check_required_components(RocksDB)
|
Loading…
Reference in New Issue
Block a user