ソースを参照

Merge topic 'FindGTest-no_release_support'

a064b18f85 FindGTest: Allow either "Debug" or "Release" configurations.

Acked-by: Kitware Robot <[email protected]>
Merge-request: !4950
Brad King 5 年 前
コミット
b516ada836
1 ファイル変更28 行追加12 行削除
  1. 28 12
      Modules/FindGTest.cmake

+ 28 - 12
Modules/FindGTest.cmake

@@ -96,6 +96,27 @@ function(__gtest_find_library _name)
     mark_as_advanced(${_name})
 endfunction()
 
+function(__gtest_find_library_configuration _name _lib _cfg_suffix)
+    set(_libs ${_lib})
+    if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD")
+        # The provided /MD project files for Google Test add -md suffixes to the
+        # library names.
+        list(INSERT _libs 0 ${_lib}-md)
+    endif()
+    list(TRANSFORM _libs APPEND "${_cfg_suffix}")
+
+    __gtest_find_library(${_name} ${_libs})
+endfunction()
+
+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+function(__gtest_find_and_select_library_configurations _basename _lib)
+    __gtest_find_library_configuration(${_basename}_LIBRARY_RELEASE ${_lib} "")
+    __gtest_find_library_configuration(${_basename}_LIBRARY_DEBUG   ${_lib} "d")
+
+    select_library_configurations(${_basename})
+    set(${_basename}_LIBRARY ${${_basename}_LIBRARY} PARENT_SCOPE)
+endfunction()
+
 macro(__gtest_determine_windows_library_type _var)
     if(EXISTS "${${_var}}")
         file(TO_NATIVE_PATH "${${_var}}" _lib_path)
@@ -187,18 +208,13 @@ find_path(GTEST_INCLUDE_DIR gtest/gtest.h
 )
 mark_as_advanced(GTEST_INCLUDE_DIR)
 
-if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD")
-    # The provided /MD project files for Google Test add -md suffixes to the
-    # library names.
-    __gtest_find_library(GTEST_LIBRARY            gtest-md  gtest)
-    __gtest_find_library(GTEST_LIBRARY_DEBUG      gtest-mdd gtestd)
-    __gtest_find_library(GTEST_MAIN_LIBRARY       gtest_main-md  gtest_main)
-    __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_main-mdd gtest_maind)
-else()
-    __gtest_find_library(GTEST_LIBRARY            gtest)
-    __gtest_find_library(GTEST_LIBRARY_DEBUG      gtestd)
-    __gtest_find_library(GTEST_MAIN_LIBRARY       gtest_main)
-    __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_maind)
+# Allow GTEST_LIBRARY and GTEST_MAIN_LIBRARY to be set manually, as the
+# locations of the gtest and gtest_main libraries, respectively.
+if(NOT GTEST_LIBRARY)
+    __gtest_find_and_select_library_configurations(GTEST gtest)
+endif()
+if(NOT GTEST_MAIN_LIBRARY)
+    __gtest_find_and_select_library_configurations(GTEST_MAIN gtest_main)
 endif()
 
 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)