From 9978d05d4418bf813b8a457a2e49d0fc8fc8b26b Mon Sep 17 00:00:00 2001 From: Jason Zaman Date: Fri, 7 Sep 2018 22:35:24 +0800 Subject: [PATCH 2/2] cmake: fix library issues Set library soversions so CMake sets the symlinks and soversions properly. Install the cmake files in the correct dir. Signed-off-by: Jason Zaman --- google/cloud/CMakeLists.txt | 14 +++++++------- google/cloud/bigtable/CMakeLists.txt | 11 ++++++++--- google/cloud/firestore/CMakeLists.txt | 14 ++++++++------ google/cloud/storage/CMakeLists.txt | 12 +++++++----- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/google/cloud/CMakeLists.txt b/google/cloud/CMakeLists.txt index 4d777261..4e26290c 100644 --- a/google/cloud/CMakeLists.txt +++ b/google/cloud/CMakeLists.txt @@ -99,6 +99,9 @@ target_include_directories(google_cloud_cpp_common $) target_compile_options(google_cloud_cpp_common PUBLIC ${GOOGLE_CLOUD_CPP_EXCEPTIONS_FLAG}) +set_target_properties(google_cloud_cpp_common PROPERTIES + VERSION ${GOOGLE_CLOUD_CPP_VERSION_MAJOR}.${GOOGLE_CLOUD_CPP_VERSION_MINOR}.${GOOGLE_CLOUD_CPP_VERSION_PATCH} + SOVERSION ${GOOGLE_CLOUD_CPP_VERSION_MAJOR}) include(CreateBazelConfig) create_bazel_config(google_cloud_cpp_common) @@ -150,7 +153,7 @@ endforeach () # Export the CMake targets to make it easy to create configuration files. install(EXPORT google_cloud_cpp_common-targets - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/google_cloud_cpp_common") + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") # Install the libraries and headers in the locations determined by # GNUInstallDirs @@ -186,12 +189,9 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_common.pc" configure_file("config.cmake.in" "google_cloud_cpp_common-config.cmake" @ONLY) configure_file("${PROJECT_SOURCE_DIR}/google/cloud/config-version.cmake.in" "google_cloud_cpp_common-config-version.cmake" @ONLY) -install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_common-config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_common-config-version.cmake" - DESTINATION - "${CMAKE_INSTALL_LIBDIR}/cmake/google_cloud_cpp_common") +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_common-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_common-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") add_subdirectory(bigtable) add_subdirectory(firestore) diff --git a/google/cloud/bigtable/CMakeLists.txt b/google/cloud/bigtable/CMakeLists.txt index 8aaff05c..9bd3effd 100644 --- a/google/cloud/bigtable/CMakeLists.txt +++ b/google/cloud/bigtable/CMakeLists.txt @@ -102,6 +102,9 @@ target_include_directories(bigtable_protos $) target_compile_options(bigtable_protos PUBLIC ${GOOGLE_CLOUD_CPP_EXCEPTIONS_FLAG}) +set_target_properties(bigtable_protos PROPERTIES + VERSION ${BIGTABLE_CLIENT_VERSION_MAJOR}.${BIGTABLE_CLIENT_VERSION_MINOR}.${BIGTABLE_CLIENT_VERSION_PATCH} + SOVERSION ${BIGTABLE_CLIENT_VERSION_MAJOR}) add_library(bigtable::protos ALIAS bigtable_protos) # Enable unit tests @@ -212,6 +215,9 @@ target_include_directories(bigtable_client $) target_compile_options(bigtable_client PUBLIC ${GOOGLE_CLOUD_CPP_EXCEPTIONS_FLAG}) +set_target_properties(bigtable_client PROPERTIES + VERSION ${BIGTABLE_CLIENT_VERSION_MAJOR}.${BIGTABLE_CLIENT_VERSION_MINOR}.${BIGTABLE_CLIENT_VERSION_PATCH} + SOVERSION ${BIGTABLE_CLIENT_VERSION_MAJOR}) add_library(bigtable::client ALIAS bigtable_client) include(CreateBazelConfig) @@ -369,7 +375,7 @@ if (NOT ${GOOGLE_CLOUD_CPP_GRPC_PROVIDER} STREQUAL "module") # Export the CMake targets to make it easy to create configuration files. install(EXPORT bigtable-targets - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/bigtable_client") + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") endif () install(TARGETS bigtable_client @@ -407,5 +413,4 @@ configure_file("${PROJECT_SOURCE_DIR}/google/cloud/config-version.cmake.in" "bigtable_client-config-version.cmake" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bigtable_client-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/bigtable_client-config-version.cmake" - DESTINATION - "${CMAKE_INSTALL_LIBDIR}/cmake/bigtable_client") + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") diff --git a/google/cloud/firestore/CMakeLists.txt b/google/cloud/firestore/CMakeLists.txt index 88c5ad6d..63d8add1 100644 --- a/google/cloud/firestore/CMakeLists.txt +++ b/google/cloud/firestore/CMakeLists.txt @@ -62,6 +62,9 @@ target_include_directories(firestore_client $) target_compile_options(firestore_client PUBLIC ${GOOGLE_CLOUD_CPP_EXCEPTIONS_FLAG}) +set_target_properties(firestore_client PROPERTIES + VERSION ${FIRESTORE_CLIENT_VERSION_MAJOR}.${FIRESTORE_CLIENT_VERSION_MINOR}.${FIRESTORE_CLIENT_VERSION_PATCH} + SOVERSION ${FIRESTORE_CLIENT_VERSION_MAJOR}) add_library(firestore::client ALIAS firestore_client) include(CreateBazelConfig) @@ -104,7 +107,8 @@ install(TARGETS # The exports can only be installed if all the dependencies are installed. CMake # needs to know where the submodules will be installed from, -install(EXPORT firestore-targets DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake) +install(EXPORT firestore-targets + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") install(TARGETS firestore_client EXPORT firestore-targets @@ -138,8 +142,6 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/firestore_client.pc" DESTINATION configure_file("config.cmake.in" "firestore_client-config.cmake" @ONLY) configure_file("${PROJECT_SOURCE_DIR}/google/cloud/config-version.cmake.in" "firestore_client-config-version.cmake" @ONLY) -install( - FILES "${CMAKE_CURRENT_BINARY_DIR}/firestore_client-config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/firestore_client-config-version.cmake" - DESTINATION - ${CMAKE_INSTALL_DATAROOTDIR}/cmake) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/firestore_client-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/firestore_client-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") diff --git a/google/cloud/storage/CMakeLists.txt b/google/cloud/storage/CMakeLists.txt index c8b641a0..c91bb17c 100644 --- a/google/cloud/storage/CMakeLists.txt +++ b/google/cloud/storage/CMakeLists.txt @@ -216,6 +216,9 @@ target_include_directories(storage_client $) target_compile_options(storage_client PUBLIC ${GOOGLE_CLOUD_CPP_EXCEPTIONS_FLAG}) +set_target_properties(storage_client PROPERTIES + VERSION ${STORAGE_CLIENT_VERSION_MAJOR}.${STORAGE_CLIENT_VERSION_MINOR}.${STORAGE_CLIENT_VERSION_PATCH} + SOVERSION ${STORAGE_CLIENT_VERSION_MAJOR}) add_library(storage_client_testing testing/canonical_errors.h @@ -326,20 +329,20 @@ install(TARGETS storage_common_options nlohmann_json # Export the CMake targets to make it easy to create configuration files. install(EXPORT storage-targets - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/storage_client") + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") install(TARGETS storage_client EXPORT storage-targets RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -install(DIRECTORY . DESTINATION include/storage/client +install(DIRECTORY . DESTINATION include/google/cloud/storage/client FILES_MATCHING PATTERN "*.h" PATTERN "testing/*" EXCLUDE) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/version_info.h DESTINATION - include/storage/client) + include/google/cloud/storage/client) # Setup global variables used in the following *.in files. set(GOOGLE_CLOUD_CPP_CONFIG_VERSION_MAJOR ${STORAGE_CLIENT_VERSION_MAJOR}) @@ -362,5 +365,4 @@ configure_file("${PROJECT_SOURCE_DIR}/google/cloud/config-version.cmake.in" "storage_client-config-version.cmake" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/storage_client-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/storage_client-config-version.cmake" - DESTINATION - "${CMAKE_INSTALL_LIBDIR}/cmake/storage_client") + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules") -- 2.16.4