Просмотр исходного кода

修改了原来几个cmake find_package模块,比原来清晰简洁
增加了find gtest模块,cmake自带的find gtest不太好用

tanghai 14 лет назад
Родитель
Сommit
4e6e95c161
4 измененных файлов с 78 добавлено и 174 удалено
  1. 21 54
      Src/Cmake/FindGFlags.cmake
  2. 27 60
      Src/Cmake/FindGLog.cmake
  3. 15 60
      Src/Cmake/FindGMock.cmake
  4. 15 0
      Src/Cmake/FindGTest.cmake

+ 21 - 54
Src/Cmake/FindGFlags.cmake

@@ -1,60 +1,27 @@
-function(_gflags_append_debugs _endvar _library)
-    if(${_library} AND ${_library}_DEBUG)
-        set(_output optimized ${${_library}} debug ${${_library}_DEBUG})
-    else()
-        set(_output ${${_library}})
-    endif()
-    set(${_endvar} ${_output} PARENT_SCOPE)
-endfunction()
+FIND_PATH(GFLAGS_INCLUDE_DIR gflags/gflags.h)
 
-function(_gflags_find_library _name)
-    find_library(${_name}
-        NAMES ${ARGN}
-        HINTS
-            $ENV{GFLAGS_ROOT}
-            ${GFLAGS_ROOT}
-        PATH_SUFFIXES ${_gflags_libpath_suffixes}
-    )
-    mark_as_advanced(${_name})
-endfunction()
+# Google's provided vcproj files generate libraries with a "lib"
+# prefix on Windows
+IF(WIN32)
+    SET(GFLAGS_ORIG_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
+    SET(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+ENDIF()
 
-if(NOT DEFINED GFLAGS_MSVC_SEARCH)
-    set(GFLAGS_MSVC_SEARCH MD)
-endif()
+FIND_LIBRARY(GFLAGS_LIBRARY NAMES gflags
+             DOC "The Google Gflags Library"
+             )
 
-set(_gflags_libpath_suffixes lib)
-if(MSVC)
-    if(GFLAGS_MSVC_SEARCH STREQUAL "MD")
-        list(APPEND _gflags_libpath_suffixes
-            msvc/gflags-md/Debug
-            msvc/gflags-md/Release)
-    elseif(GFLAGS_MSVC_SEARCH STREQUAL "MT")
-        list(APPEND _gflags_libpath_suffixes
-            msvc/gflags/Debug
-            msvc/gflags/Release)
-    endif()
-endif()
+MARK_AS_ADVANCED(GFLAGS_INCLUDE_DIR GFLAGS_LIBRARY)
 
+# Restore original find library prefixes
+IF(WIN32)
+    SET(CMAKE_FIND_LIBRARY_PREFIXES "${GFLAGS_ORIG_FIND_LIBRARY_PREFIXES}")
+ENDIF()
 
-find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h
-    HINTS
-        $ENV{GFLAGS_ROOT}/include
-        ${GFLAGS_ROOT}/include
-)
-mark_as_advanced(GFLAGS_INCLUDE_DIR)
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GFLAGS DEFAULT_MSG GFLAGS_LIBRARY GFLAGS_INCLUDE_DIR)
 
-if(MSVC AND GFLAGS_MSVC_SEARCH STREQUAL "MD")
-    # The provided /MD project files for Google Log add -md suffixes to the
-    # library names.
-    _gflags_find_library(GFLAGS_LIBRARY            gflags-md  gflags)
-else()
-    _gflags_find_library(GFLAGS_LIBRARY            gflags)
-endif()
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GFlags DEFAULT_MSG GFLAGS_LIBRARY)
-
-if(GFLAGS_FOUND)
-    set(GFLAGS_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIR})
-    _gflags_append_debugs(GFLAGS_LIBRARIES      GFLAGS_LIBRARY)
-endif()
+IF(GFLAGS_FOUND)
+    SET(GFLAGS_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIR})
+    SET(GFLAGS_LIBRARIES    ${GFLAGS_LIBRARY})
+ENDIF()

+ 27 - 60
Src/Cmake/FindGLog.cmake

@@ -1,60 +1,27 @@
-function(_glog_append_debugs _endvar _library)
-    if(${_library} AND ${_library}_DEBUG)
-        set(_output optimized ${${_library}} debug ${${_library}_DEBUG})
-    else()
-        set(_output ${${_library}})
-    endif()
-    set(${_endvar} ${_output} PARENT_SCOPE)
-endfunction()
-
-function(_glog_find_library _name)
-    find_library(${_name}
-        NAMES ${ARGN}
-        HINTS
-            $ENV{GLOG_ROOT}
-            ${GLOG_ROOT}
-        PATH_SUFFIXES ${_glog_libpath_suffixes}
-    )
-    mark_as_advanced(${_name})
-endfunction()
-
-if(NOT DEFINED GLOG_MSVC_SEARCH)
-    set(GLOG_MSVC_SEARCH MD)
-endif()
-
-set(_glog_libpath_suffixes lib)
-if(MSVC)
-    if(GLOG_MSVC_SEARCH STREQUAL "MD")
-        list(APPEND _glog_libpath_suffixes
-            msvc/glog-md/Debug
-            msvc/glog-md/Release)
-    elseif(GLOG_MSVC_SEARCH STREQUAL "MT")
-        list(APPEND _glog_libpath_suffixes
-            msvc/glog/Debug
-            msvc/glog/Release)
-    endif()
-endif()
-
-
-find_path(GLOG_INCLUDE_DIR glog/logging.h
-    HINTS
-        $ENV{GLOG_ROOT}/include
-        ${GLOG_ROOT}/include
-)
-mark_as_advanced(GLOG_INCLUDE_DIR)
-
-if(MSVC AND GLOG_MSVC_SEARCH STREQUAL "MD")
-    # The provided /MD project files for Google Log add -md suffixes to the
-    # library names.
-    _glog_find_library(GLOG_LIBRARY            glog-md  glog)
-else()
-    _glog_find_library(GLOG_LIBRARY            glog)
-endif()
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLog DEFAULT_MSG GLOG_LIBRARY)
-
-if(GLOG_FOUND)
-    set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})
-    _glog_append_debugs(GLOG_LIBRARIES      GLOG_LIBRARY)
-endif()
+FIND_PATH(GLOG_INCLUDE_DIR glog/logging.h)
+
+# Google's provided vcproj files generate libraries with a "lib"
+# prefix on Windows
+IF(WIN32)
+    set(GLOG_ORIG_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
+    set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+ENDIF()
+
+FIND_LIBRARY(GLOG_LIBRARY NAMES glog
+             DOC "The Google Glog Library"
+             )
+
+MARK_AS_ADVANCED(GLOG_INCLUDE_DIR GLOG_LIBRARY)
+
+# Restore original find library prefixes
+IF(WIN32)
+    SET(CMAKE_FIND_LIBRARY_PREFIXES "${GLOG_ORIG_FIND_LIBRARY_PREFIXES}")
+ENDIF()
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLOG DEFAULT_MSG GLOG_LIBRARY GLOG_INCLUDE_DIR)
+
+IF(GLOG_FOUND)
+    SET(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})
+    SET(GLOG_LIBRARIES    ${GLOG_LIBRARY})
+ENDIF()

+ 15 - 60
Src/Cmake/FindGMock.cmake

@@ -1,60 +1,15 @@
-function(_gmock_append_debugs _endvar _library)
-    if(${_library} AND ${_library}_DEBUG)
-        set(_output optimized ${${_library}} debug ${${_library}_DEBUG})
-    else()
-        set(_output ${${_library}})
-    endif()
-    set(${_endvar} ${_output} PARENT_SCOPE)
-endfunction()
-
-function(_gmock_find_library _name)
-    find_library(${_name}
-        NAMES ${ARGN}
-        HINTS
-            $ENV{GMOCK_ROOT}
-            ${GMOCK_ROOT}
-        PATH_SUFFIXES ${_gmock_libpath_suffixes}
-    )
-    mark_as_advanced(${_name})
-endfunction()
-
-if(NOT DEFINED GMOCK_MSVC_SEARCH)
-    set(GMOCK_MSVC_SEARCH MD)
-endif()
-
-set(_gmock_libpath_suffixes lib)
-if(MSVC)
-    if(GMOCK_MSVC_SEARCH STREQUAL "MD")
-        list(APPEND _gmock_libpath_suffixes
-            msvc/gmock-md/Debug
-            msvc/gmock-md/Release)
-    elseif(GMOCK_MSVC_SEARCH STREQUAL "MT")
-        list(APPEND _gmock_libpath_suffixes
-            msvc/gmock/Debug
-            msvc/gmock/Release)
-    endif()
-endif()
-
-
-find_path(GMOCK_INCLUDE_DIR gmock/gmock.h
-    HINTS
-        $ENV{GMOCK_ROOT}/include
-        ${GMOCK_ROOT}/include
-)
-mark_as_advanced(GMOCK_INCLUDE_DIR)
-
-if(MSVC AND GMOCK_MSVC_SEARCH STREQUAL "MD")
-    # The provided /MD project files for Google Log add -md suffixes to the
-    # library names.
-    _gmock_find_library(GMOCK_LIBRARY            gmock-md  gmock)
-else()
-    _gmock_find_library(GMOCK_LIBRARY            gmock)
-endif()
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMock DEFAULT_MSG GMOCK_LIBRARY)
-
-if(GMOCK_FOUND)
-    set(GMOCK_INCLUDE_DIRS ${GMOCK_INCLUDE_DIR})
-    _gmock_append_debugs(GMOCK_LIBRARIES      GMOCK_LIBRARY)
-endif()
+FIND_PATH(GMOCK_INCLUDE_DIR gmock/gmock.h)
+
+FIND_LIBRARY(GMOCK_LIBRARY NAMES gmock
+             DOC "The Google Gmock Library"
+             )
+
+MARK_AS_ADVANCED(GMOCK_INCLUDE_DIR GMOCK_LIBRARY)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMOCK DEFAULT_MSG GMOCK_LIBRARY GMOCK_INCLUDE_DIR)
+
+IF(GMOCK_FOUND)
+    SET(GMOCK_INCLUDE_DIRS ${GMOCK_INCLUDE_DIR})
+    SET(GMOCK_LIBRARIES    ${GMOCK_LIBRARY})
+ENDIF()

+ 15 - 0
Src/Cmake/FindGTest.cmake

@@ -0,0 +1,15 @@
+FIND_PATH(GTEST_INCLUDE_DIR gtest/gtest.h)
+
+FIND_LIBRARY(GTEST_LIBRARY NAMES gtest
+             DOC "The Google Gtest Library"
+             )
+
+MARK_AS_ADVANCED(GTEST_INCLUDE_DIR GTEST_LIBRARY)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTEST DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR)
+
+IF(GTEST_FOUND)
+    SET(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR})
+    SET(GTEST_LIBRARIES    ${GTEST_LIBRARY})
+ENDIF()