Hi Steven, On Thu, 16 Sep 2021 08:15:31 +0200 Timo Röhling <roehl...@debian.org> wrote:
One alternative solution would be to patch the upstream CMake files and export GMock independently with their own GMockConfig.cmake and GMockTargets.cmake. Then, for backwards compatibility, you could add something likefind_package(GMock QUIET) if(NOT GMock_FOUND) message(STATUS "GMock not found, targets will not be imported") endif() to the end of GTestConfig.cmake.
I have simplified and and improved this approach further and come up with a working solution. I opened an MR in Salsa, which is probably most convenient, but I'll attach the diff here for reference. Cheers Timo -- ⢀⣴⠾⠻⢶⣦⠀ ╭────────────────────────────────────────────────────╮ ⣾⠁⢠⠒⠀⣿⡁ │ Timo Röhling │ ⢿⡄⠘⠷⠚⠋⠀ │ 9B03 EBB9 8300 DF97 C2B1 23BF CC8C 6BDD 1403 F4CA │ ⠈⠳⣄⠀⠀⠀⠀ ╰────────────────────────────────────────────────────╯
diff --git a/debian/libgmock-dev.install b/debian/libgmock-dev.install index 0c07049..b3fb3c0 100644 --- a/debian/libgmock-dev.install +++ b/debian/libgmock-dev.install @@ -1,4 +1,5 @@ debian/tmp/usr/lib/*/libgmock* +debian/tmp/usr/lib/*/cmake/GTest/GMock* debian/tmp/usr/lib/*/pkgconfig/gmock*pc debian/tmp/usr/include/gmock diff --git a/debian/libgtest-dev.install b/debian/libgtest-dev.install index a7b1bec..8d6cf75 100644 --- a/debian/libgtest-dev.install +++ b/debian/libgtest-dev.install @@ -1,4 +1,4 @@ debian/tmp/usr/lib/*/libgtest* -debian/tmp/usr/lib/*/cmake/GTest/* +debian/tmp/usr/lib/*/cmake/GTest/GTest* debian/tmp/usr/lib/*/pkgconfig/gtest*pc debian/tmp/usr/include/gtest diff --git a/debian/patches/0006-Separate-GTest-and-GMock-targets.patch b/debian/patches/0006-Separate-GTest-and-GMock-targets.patch new file mode 100644 index 0000000..987033d --- /dev/null +++ b/debian/patches/0006-Separate-GTest-and-GMock-targets.patch @@ -0,0 +1,85 @@ +From: =?utf-8?q?Timo_R=C3=B6hling?= <roehl...@debian.org> +Date: Fri, 17 Sep 2021 08:55:38 +0200 +Subject: Separate GTest and GMock targets + +--- + googlemock/CMakeLists.txt | 9 ++++++++- + googletest/CMakeLists.txt | 4 ++-- + googletest/cmake/Config.cmake.in | 3 ++- + googletest/cmake/internal_utils.cmake | 4 ++-- + 4 files changed, 14 insertions(+), 6 deletions(-) + +diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt +index 5418731..f4f29cf 100644 +--- a/googlemock/CMakeLists.txt ++++ b/googlemock/CMakeLists.txt +@@ -122,7 +122,14 @@ endif() + ######################################################################## + # + # Install rules +-install_project(gmock gmock_main) ++install_project(GMockTargets gmock gmock_main) ++ ++if(INSTALL_GTEST) ++ set(cmake_files_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${cmake_package_name}") ++ install(EXPORT GMockTargets ++ NAMESPACE ${cmake_package_name}:: ++ DESTINATION ${cmake_files_install_dir}) ++endif() + + ######################################################################## + # +diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt +index 58a0610..82d6de6 100644 +--- a/googletest/CMakeLists.txt ++++ b/googletest/CMakeLists.txt +@@ -106,7 +106,7 @@ if (INSTALL_GTEST) + set(cmake_files_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${cmake_package_name}") + set(version_file "${generated_dir}/${cmake_package_name}ConfigVersion.cmake") + write_basic_package_version_file(${version_file} VERSION ${GOOGLETEST_VERSION} COMPATIBILITY AnyNewerVersion) +- install(EXPORT ${targets_export_name} ++ install(EXPORT GTestTargets + NAMESPACE ${cmake_package_name}:: + DESTINATION ${cmake_files_install_dir}) + set(config_file "${generated_dir}/${cmake_package_name}Config.cmake") +@@ -151,7 +151,7 @@ target_link_libraries(gtest_main PUBLIC gtest) + ######################################################################## + # + # Install rules +-install_project(gtest gtest_main) ++install_project(GTestTargets gtest gtest_main) + + ######################################################################## + # +diff --git a/googletest/cmake/Config.cmake.in b/googletest/cmake/Config.cmake.in +index 12be449..8e34592 100644 +--- a/googletest/cmake/Config.cmake.in ++++ b/googletest/cmake/Config.cmake.in +@@ -5,5 +5,6 @@ if (@GTEST_HAS_PTHREAD@) + find_dependency(Threads) + endif() + +-include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") ++include("${CMAKE_CURRENT_LIST_DIR}/GTestTargets.cmake") ++include("${CMAKE_CURRENT_LIST_DIR}/GMockTargets.cmake" OPTIONAL) + check_required_components("@project_name@") +diff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake +index 483808c..c44c83d 100644 +--- a/googletest/cmake/internal_utils.cmake ++++ b/googletest/cmake/internal_utils.cmake +@@ -316,13 +316,13 @@ endfunction() + # install_project(targets...) + # + # Installs the specified targets and configures the associated pkgconfig files. +-function(install_project) ++function(install_project ExportName) + if(INSTALL_GTEST) + install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + # Install the project targets. + install(TARGETS ${ARGN} +- EXPORT ${targets_export_name} ++ EXPORT ${ExportName} + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") diff --git a/debian/patches/series b/debian/patches/series index 0081b37..bfb4351 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,3 +3,4 @@ 0003-Remove-Werror-from-cxx_base_flags.patch 0004-Use-python-3-for-installed-script-gmock_gen.patch 0005-Add-GoogleTest-version-to-each-sub-project-to-allow-.patch +0006-Separate-GTest-and-GMock-targets.patch
signature.asc
Description: PGP signature