[Cmake-commits] [cmake-commits] lowman committed FindGTest.cmake 1.2 1.3

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Oct 1 01:12:42 EDT 2009


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv21902

Modified Files:
	FindGTest.cmake 
Log Message:
Some bugfixes, also added public function for closer integration btwn GoogleTest & CTest, contributed by Dan Blezek.

Other minor changes:
* Enhanced documentation & added examples
* _INCLUDE_DIRS and _LIBRARIES was being set regardless of _FOUND
* Fixed status message to include library rather than include dir
* Improved detection of MSVC compiled libraries
* Added a variable (GTEST_BOTH_LIBRARIES) for libgtest + libgtest_main


Index: FindGTest.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindGTest.cmake,v
retrieving revision 1.2
retrieving revision 1.3
diff -C 2 -d -r1.2 -r1.3
*** FindGTest.cmake	28 Sep 2009 15:45:33 -0000	1.2
--- FindGTest.cmake	1 Oct 2009 05:12:40 -0000	1.3
***************
*** 5,19 ****
  #   GTEST_FOUND - Found the Google Testing framework
  #   GTEST_INCLUDE_DIRS - Include directories
- #   GTEST_LIBRARIES - The GTest library
- #   GTEST_MAIN_LIBRARIES - The GTest library for automatic main()
  #
! # Accepts the following CMake/Environment variables as input:
  #
! #   GTEST_ROOT - The root directory of the gtest install prefix
  #
  
  #=============================================================================
  # Copyright 2009 Kitware, Inc.
  # Copyright 2009 Philip Lowman <philip at yhbt.com>
  #
  # Distributed under the OSI-approved BSD License (the "License");
--- 5,59 ----
  #   GTEST_FOUND - Found the Google Testing framework
  #   GTEST_INCLUDE_DIRS - Include directories
  #
! # Also defines the library variables below as normal
! # variables.  These contain debug/optimized keywords when
! # a debugging library is found.
  #
! #   GTEST_BOTH_LIBRARIES - Both libgtest & libgtest-main
! #   GTEST_LIBRARIES - libgtest
! #   GTEST_MAIN_LIBRARIES - libgtest-main
! #
! # Accepts the following variables as input:
! #
! #   GTEST_ROOT - (as CMake or env. variable)
! #                The root directory of the gtest install prefix
! #
! #   GTEST_MSVC_SEARCH - If on MSVC, enables searching the build tree of
! #                       GTest if set to MD or MT (defaults: MD)
! #
! #-----------------------
! # Example Usage:
! #
! #    enable_testing(true)
! #    find_package(GTest REQUIRED)
! #    include_directories(${GTEST_INCLUDE_DIRS})
! #
! #    add_executable(foo foo.cc)
! #    target_link_libraries(foo ${GTEST_BOTH_LIBRARIES})
! #
! #    add_test(AllTestsInFoo foo)
  #
+ #-----------------------
+ #
+ # If you would like each Google test to show up in CTest as
+ # a test you may use the following macro.  NOTE: It WILL slow
+ # down your tests, so be warned.
+ #
+ # GTEST_ADD_TESTS(executable extra_args ARGN)
+ #    executable = The path to the test executable
+ #    extra_args = Pass a list of extra arguments to be passed to
+ #                 executable enclosed in quotes (or "" for none)
+ #    ARGN =       A list of source files to search for tests & test
+ #                 fixtures.
+ #
+ #  Example:
+ #     set(FooTestArgs --foo 1 --bar 2)
+ #     add_executable(FooTest FooUnitTest.cc)
+ #     GTEST_ADD_TESTS(FooTest "${FooTestArgs}" FooUnitTest.cc)
  
  #=============================================================================
  # Copyright 2009 Kitware, Inc.
  # Copyright 2009 Philip Lowman <philip at yhbt.com>
+ # Copyright 2009 Daniel Blezek <blezek at gmail.com>
  #
  # Distributed under the OSI-approved BSD License (the "License");
***************
*** 26,77 ****
  # (To distributed this file outside of CMake, substitute the full
  #  License text for the above reference.)
  
! find_path(GTEST_INCLUDE_DIR gtest/gtest.h
!     HINTS
!         $ENV{GTEST_ROOT}/include
!         ${GTEST_ROOT}/include
! )
  
! function(_gtest_find_library _name _library)
!    find_library(${_name} ${_library}
!       HINTS
!          $ENV{GTEST_ROOT}
!          ${GTEST_ROOT}
!       PATH_SUFFIXES lib64 lib
!    )
  endfunction()
  
! _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)
  
! mark_as_advanced(GTEST_INCLUDE_DIR)
! mark_as_advanced(GTEST_LIBRARY)
! mark_as_advanced(GTEST_LIBRARY_DEBUG)
! mark_as_advanced(GTEST_MAIN_LIBRARY)
! mark_as_advanced(GTEST_MAIN_LIBRARY_DEBUG)
  
! include(FindPackageHandleStandardArgs)
! FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTEST DEFAULT_MSG GTEST_INCLUDE_DIR GTEST_LIBRARY GTEST_MAIN_LIBRARY)
  
! set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR})
  
- # Have *_LIBRARIES contain debug/release keywords if DEBUG library is available
  
! if(GTEST_LIBRARY AND GTEST_LIBRARY_DEBUG)
!    set(GTEST_LIBRARIES
!          optimized ${GTEST_LIBRARY}
!          debug ${GTEST_LIBRARY_DEBUG})
  else()
!    set(GTEST_LIBRARIES ${GTEST_LIBRARY})
  endif()
  
! if(GTEST_MAIN_LIBRARY AND GTEST_MAIN_LIBRARY_DEBUG)
!    set(GTEST_MAIN_LIBRARIES
!          optimized ${GTEST_MAIN_LIBRARY}
!          debug ${GTEST_MAIN_LIBRARY_DEBUG})
! else()
!    set(GTEST_MAIN_LIBRARIES ${GTEST_MAIN_LIBRARY})
  endif()
  
--- 66,155 ----
  # (To distributed this file outside of CMake, substitute the full
  #  License text for the above reference.)
+ #
+ # Thanks to Daniel Blezek <blezek at gmail.com> for the GTEST_ADD_TESTS code
  
! function(GTEST_ADD_TESTS executable extra_args)
!     if(NOT ARGN)
!         message(FATAL_ERROR "Missing ARGN: Read the documentation for GTEST_ADD_TESTS")
!     endif()
!     foreach(source ${ARGN})
!         file(READ "${source}" contents)
!         string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents})
!         foreach(hit ${found_tests})
!             string(REGEX REPLACE ".*\\(([A-Za-z_0-9]+)[, ]*([A-Za-z_0-9]+)\\).*" "\\1.\\2" test_name ${hit})
!             add_test(${test_name} ${executable} --gtest_filter=${test_name} ${extra_args})
!         endforeach()
!     endforeach()
! endfunction()
  
! function(_gtest_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(_gtest_find_library _name)
!     find_library(${_name}
!         NAMES ${ARGN}
!         HINTS
!             $ENV{GTEST_ROOT}
!             ${GTEST_ROOT}
!         PATH_SUFFIXES ${_gtest_libpath_suffixes}
!     )
!     mark_as_advanced(${_name})
! endfunction()
  
! #
  
! if(NOT DEFINED GTEST_MSVC_SEARCH)
!     set(GTEST_MSVC_SEARCH MD)
! endif()
  
! set(_gtest_libpath_suffixes lib)
! if(MSVC)
!     if(GTEST_MSVC_SEARCH STREQUAL "MD")
!         list(APPEND _gtest_libpath_suffixes
!             msvc/gtest-md/Debug
!             msvc/gtest-md/Release)
!     elseif(GTEST_MSVC_SEARCH STREQUAL "MT")
!         list(APPEND _gtest_libpath_suffixes
!             msvc/gtest/Debug
!             msvc/gtest/Release)
!     endif()
! endif()
  
  
! find_path(GTEST_INCLUDE_DIR gtest/gtest.h
!     HINTS
!         $ENV{GTEST_ROOT}/include
!         ${GTEST_ROOT}/include
! )
! 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)
  endif()
  
! include(FindPackageHandleStandardArgs)
! FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
! 
! if(GTEST_FOUND)
!     set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR})
!     _gtest_append_debugs(GTEST_LIBRARIES      GTEST_LIBRARY)
!     _gtest_append_debugs(GTEST_MAIN_LIBRARIES GTEST_MAIN_LIBRARY)
!     set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES})
  endif()
  



More information about the Cmake-commits mailing list