# FindGTest

Locate the Google C++ Testing Framework.

## Imported targets

This module defines the following `IMPORTED` targets:

`GTest::GTest`
  The Google Test `gtest` library, if found; adds Thread::Thread automatically
`GTest::Main`
  The Google Test `gtest_main` library, if found

## Result variables

This module will set the following variables in your project:

`GTEST_FOUND`
  Found the Google Testing framework
`GTEST_INCLUDE_DIRS`
  the directory containing the Google Test headers

The library variables below are set as normal variables. These contain debug/optimized keywords when a debugging library is found.

`GTEST_LIBRARIES`
  The Google Test `gtest` library; note it also requires linking with an appropriate thread library
`GTEST_MAIN_LIBRARIES`
  The Google Test `gtest_main` library
`GTEST_BOTH_LIBRARIES`
  Both `gtest` and `gtest_main`

## Cache variables

The following cache variables may also be set:

`GTEST_ROOT`
  The root directory of the Google Test installation (may also be set as an environment variable)
`GTEST_MSVC_SEARCH`
  If compiling with MSVC, this variable can be set to `MD` or `MT` (the default) to enable searching a GTest build tree

## Example usage

    enable_testing()
    find_package(GTest REQUIRED)

    add_executable(foo foo.cc)
    target_link_libraries(foo GTest::GTest GTest::Main)

    add_test(AllTestsInFoo foo)

## Deeper integration with CTest

If you would like each Google test to show up in CTest as a test you may use the following macro:

    GTEST_ADD_TESTS(executable extra_args files...)

`executable`
  the path to the test executable
`extra_args`
  a list of extra arguments to be passed to executable enclosed in quotes (or `""` for none)
`files...`
  a list of source files to search for tests and test fixtures. Or `AUTO` to find them from executable target

However, note that this macro will slow down your tests by running an executable for each test and test fixture.

Example usage:

    set(FooTestArgs --foo 1 --bar 2)
    add_executable(FooTest FooUnitTest.cc)
    GTEST_ADD_TESTS(FooTest "${FooTestArgs}" AUTO)