Spec-Zone.ru › CMake

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API