FindGTest
Находит GoogleTest — платформу тестирования и создания моков для C++ от Google:
find_package(GTest [...])
Платформа GoogleTest также включает GoogleMock — библиотеку для написания и использования мок-классов C++. В некоторых системах GoogleMock может распространяться в виде отдельного пакета.
Если доступны варианты библиотек GoogleTest и GoogleMock для отладки и выпуска (оптимизированные), этот модуль выбирает подходящие варианты в соответствии с текущей Конфигурацией сборки.
Добавлено в версии 3.20: Если GoogleTest собран и установлен с помощью системы сборки на основе CMake, он предоставляет файл конфигурации пакета (GTestConfig.cmake), который можно использовать с find_package() в режиме Config. По умолчанию этот модуль теперь ищет такой файл конфигурации и, если находит его, возвращает результаты без дальнейших действий. Если файл конфигурации из upstream не найден, модуль переключается на режим Module и выполняет поиск в стандартных расположениях.
Импортированные цели
Этот модуль предоставляет следующие импортированные цели:
-
GTest::gtest -
Добавлено в версии 3.20.
Цель, инкапсулирующая требования к использованию библиотеки GoogleTest
gtest, доступная, если GoogleTest найден. Библиотекаgtestпредоставляет основные функции платформы тестирования GoogleTest. -
GTest::gtest_main -
Добавлено в версии 3.20.
Цель, инкапсулирующая требования к использованию библиотеки GoogleTest
gtest_main, доступная, если GoogleTest найден. Библиотекаgtest_mainпредоставляет функциюmain(), позволяющую запускать тесты без необходимости определять её вручную.Связывайте с
GTest::gtest_mainтолько в том случае, если GoogleTest должен предоставлять функциюmain()для исполняемого файла. Если проект предоставляет собственную реализациюmain(), связывайте только сGTest::gtest. -
GTest::gmock -
Добавлено в версии 3.23.
Цель, инкапсулирующая требования к использованию библиотеки GoogleMock
gmock, доступная, если найдены GoogleTest и его библиотека Mock. Библиотекаgmockпредоставляет средства для написания и использования мок-классов C++. -
GTest::gmock_main -
Добавлено в версии 3.23.
Цель, инкапсулирующая требования к использованию библиотеки GoogleMock
gmock_main, доступная, если найдены GoogleTest иgmock_main. Библиотекаgmock_mainпредоставляет функциюmain(), позволяющую запускать тесты GoogleMock без необходимости определять её вручную.Связывайте с
GTest::gmock_mainтолько в том случае, если GoogleTest должен предоставлять функциюmain()для исполняемого файла. Если проект предоставляет собственную реализациюmain(), связывайте только сGTest::gmock.
Переменные результата
Этот модуль определяет следующие переменные:
-
GTest_FOUND -
Добавлено в версии 3.3.
Логическое значение, указывающее, найден ли GoogleTest.
Подсказки
Этот модуль принимает следующие переменные перед вызовом find_package(GTest):
-
GTEST_ROOT -
Корневой каталог установки GoogleTest (может также задаваться как переменная среды). Эта переменная используется только в том случае, если GoogleTest найден в режиме Module.
-
GTEST_MSVC_SEARCH -
При компиляции с MSVC эта переменная определяет, какой вариант сборки GoogleTest искать, исходя из модели связывания библиотеки времени выполнения. Эта переменная используется только в том случае, если GoogleTest найден в режиме Module, и принимает одно из следующих значений:
-
MD -
(По умолчанию) Ищет варианты динамических библиотек GoogleTest, собранные для связывания с динамической библиотекой времени выполнения C. Обычно эти библиотеки компилируются с флагами среды выполнения MSVC
/MDили/MDd(соответственно для конфигураций Release или Debug). -
MT -
Ищет варианты статических библиотек GoogleTest, собранные для связывания со статической библиотекой времени выполнения C. Обычно эти библиотеки компилируются с флагами среды выполнения MSVC
/MTили/MTd.
-
Устаревшие элементы
Устаревшие переменные
Для обеспечения обратной совместимости предоставляются следующие переменные:
-
GTEST_INCLUDE_DIRS -
Устарела с версии 4.1: Вместо неё используйте импортированную цель
GTest::gtest, которая предоставляет необходимые каталоги включаемых файлов через свойство целиINTERFACE_INCLUDE_DIRECTORIES.Переменная результата, содержащая каталоги включаемых файлов с заголовками, необходимыми для использования GoogleTest. Наличие этой переменной гарантируется только в том случае, если GoogleTest найден в режиме Module.
-
GTEST_LIBRARIES -
Устарела с версии 4.1: Вместо неё используйте импортированную цель
GTest::gtest.Переменная результата, содержащая библиотеки, с которыми необходимо связываться для использования библиотеки GoogleTest
gtest. Обратите внимание, что помимо библиотек, указанных этой переменной, проекты также должны связываться с подходящей библиотекой потоков. -
GTEST_MAIN_LIBRARIES -
Устарела с версии 4.1: Вместо неё используйте импортированную цель
GTest::gtest_main.Переменная результата, содержащая библиотеки, с которыми необходимо связываться для использования библиотеки GoogleTest
gtest_main. -
GTEST_BOTH_LIBRARIES -
Устарела с версии 4.1: Вместо неё используйте импортированные цели
GTest::gtestиGTest::gtest_main.Переменная результата, содержащая библиотеки
gtestиgtest_mainвместе. -
GTEST_FOUND -
Устарела с версии 4.2: Используйте
GTest_FOUND, имеющую то же значение.Логическое значение, указывающее, найден ли GoogleTest.
Устаревшие импортированные цели
Для обеспечения обратной совместимости этот модуль также предоставляет следующие импортированные цели (доступны начиная с CMake 3.5):
-
GTest::GTest -
Устарела с версии 3.20: Вместо неё используйте импортированную цель
GTest::gtest.Импортированная цель, связывающая с библиотекой
GTest::gtest. -
GTest::Main -
Устарела с версии 3.20: Вместо неё используйте импортированную цель
GTest::gtest_main.Импортированная цель, связывающая с библиотекой
GTest::gtest_main.
Примеры
Примеры: поиск GoogleTest
Поиск GoogleTest:
find_package(GoogleTest)
Или поиск GoogleTest с обязательным условием его наличия (если GoogleTest не найден, обработка прекращается с сообщением об ошибке):
find_package(GoogleTest REQUIRED)
Примеры: использование импортированных целей
В следующем примере импортированная цель GTest::gtest связывается с целью проекта, что позволяет использовать основные функции платформы тестирования GoogleTest:
find_package(GTest REQUIRED) target_link_libraries(foo PRIVATE GTest::gtest)
В следующем примере импортированная цель GTest::gtest_main также связывается с исполняемым файлом и регистрируется тест. Библиотека GTest::gtest_main предоставляет функцию main(), поэтому нет необходимости писать её вручную. Библиотека GTest::gtest по-прежнему связывается, поскольку код теста непосредственно использует компоненты, предоставляемые GTest::gtest; рекомендуется напрямую связываться с библиотеками, которые используются напрямую.
enable_testing() find_package(GTest REQUIRED) add_executable(foo foo.cc) target_link_libraries(foo PRIVATE GTest::gtest GTest::gtest_main) add_test(NAME AllTestsInFoo COMMAND foo)
Расширенная интеграция с CTest
Этот модуль часто используется вместе с модулем GoogleTest, который предоставляет команды gtest_discover_tests() и gtest_add_tests() для интеграции инфраструктуры GoogleTest с CTest:
find_package(GTest) target_link_libraries(example PRIVATE GTest::gtest GTest::gtest_main) include(GoogleTest) gtest_discover_tests(example) # ...
Изменено в версии 3.9: В предыдущих версиях CMake команда gtest_add_tests() определялась в этом модуле.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/FindGTest.html