From d09c57f81bc9574f0643cba089fb2efa4030c949 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris <sideris.konstantin@gmail.com> Date: Sun, 3 Jun 2018 21:57:39 +0300 Subject: [PATCH] Add install target --- CMakeLists.txt | 55 +++++++++++++++++++++++++++++-- cmake/MatrixClientConfig.cmake.in | 11 +++++++ 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 cmake/MatrixClientConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 04e2fbf40..94c00b02c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,9 +68,9 @@ target_include_directories(matrix_client SYSTEM PUBLIC ${OPENSSL_INCLUDE_DIR} + ${Boost_INCLUDE_DIRS} PRIVATE ${OLM_INCLUDE_DIR} - ${Boost_INCLUDE_DIRS} ${sodium_INCLUDE_DIR}) target_include_directories( matrix_client @@ -80,10 +80,12 @@ target_include_directories( target_link_libraries(matrix_client PUBLIC MatrixStructs::MatrixStructs + Boost::boost + Boost::system ${Boost_LIBRARIES} - PRIVATE OpenSSL::Crypto OpenSSL::SSL + PRIVATE ${OLM_LIBRARY} sodium ZLIB::ZLIB) @@ -154,3 +156,52 @@ if(BUILD_LIB_EXAMPLES) target_link_libraries(crypto_bot matrix_client) target_include_directories(crypto_bot PRIVATE ${OLM_INCLUDE_DIR}) endif() + +# +# Installation & Target configuration. +# +include(GNUInstallDirs) +set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/MatrixClient) + +install(TARGETS matrix_client + EXPORT matrix_client-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +set_target_properties(matrix_client PROPERTIES EXPORT_NAME MatrixClient) + +install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(EXPORT matrix_client-targets + FILE + MatrixClientTargets.cmake + NAMESPACE + MatrixClient:: + DESTINATION + ${INSTALL_CONFIGDIR}) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/MatrixClientConfigVersion.cmake + VERSION + ${PROJECT_VERSION} + COMPATIBILITY + AnyNewerVersion) + +configure_package_config_file( + ${CMAKE_CURRENT_LIST_DIR}/cmake/MatrixClientConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/MatrixClientConfig.cmake + INSTALL_DESTINATION + ${INSTALL_CONFIGDIR}) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/MatrixClientConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/MatrixClientConfigVersion.cmake + DESTINATION + ${INSTALL_CONFIGDIR}) + +export(EXPORT + matrix_client-targets + FILE + ${CMAKE_CURRENT_BINARY_DIR}/MatrixClientTargets.cmake + NAMESPACE + MatrixClient::) +export(PACKAGE MatrixClient) diff --git a/cmake/MatrixClientConfig.cmake.in b/cmake/MatrixClientConfig.cmake.in new file mode 100644 index 000000000..731afe132 --- /dev/null +++ b/cmake/MatrixClientConfig.cmake.in @@ -0,0 +1,11 @@ +get_filename_component(MatrixClient_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +include(CMakeFindDependencyMacro) + +list(APPEND CMAKE_MODULE_PATH ${MatrixClient_CMAKE_DIR}) +list(REMOVE_AT CMAKE_MODULE_PATH -1) + +if(NOT TARGET MatrixClient::MatrixClient) + include("${MatrixClient_CMAKE_DIR}/MatrixClientTargets.cmake") +endif() + +set(MatrixClient_LIBRARIES MatrixClient::MatrixClient) -- GitLab