Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Locate the Google C++ Testing Framework.
- #
- # Defines the following variables:
- #
- # 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 a CMake or environment variable)
- # The root directory of the gtest install prefix
- #
- # GTEST_MSVC_SEARCH - If compiling with MSVC, this variable can be set to
- # "MD" or "MT" to enable searching a GTest build tree
- # (defaults: "MD")
- #
- #-----------------------
- # Example Usage:
- #
- # enable_testing()
- # 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 by running an executable
- # for each test and test fixture. You will also have to rerun
- # CMake after adding or removing tests or test fixtures.
- #
- # 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@yhbt.com>
- # Copyright 2009 Daniel Blezek <blezek@gmail.com>
- #
- # Distributed under the OSI-approved BSD License (the "License");
- # see accompanying file Copyright.txt for details.
- #
- # This software is distributed WITHOUT ANY WARRANTY; without even the
- # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- # See the License for more information.
- #=============================================================================
- # (To distributed this file outside of CMake, substitute the full
- # License text for the above reference.)
- #
- # Thanks to Daniel Blezek <blezek@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})
- list(APPEND _test_names ${test_name})
- endforeach()
- endforeach()
- set(GTEST_ADD_TEST_NAMES ${_test_names} PARENT_SCOPE)
- 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()
Add Comment
Please, Sign In to add comment