Как найти Google Test с find_package, используя CMake на Windows? - PullRequest
1 голос
/ 09 января 2020

Я безуспешно пытался использовать функцию find_package в CMake, чтобы использовать готовую "общесистемную" версию GTest в Windows. Вот минимальный воспроизводимый пример моего CMakeLists.txt:

cmake_minimum_required(VERSION 3.2)
find_package(GTest REQUIRED)
if(NOT GTEST_LIBRARY)
    message("GTest not found!")
endif()

Я пытаюсь сгенерировать файлы сборки, используя следующую команду:

cmake .. -G"Visual Studio 14 2015" -DGTEST_ROOT="c:\Libs\googletest"

Путь c:\Libs\googletest содержит мои предварительные -встроенный GTest (с заголовочными файлами и двоичными файлами). Я изучил файл FindGTest.cmake в своей установке CMake (я использую CMake версии 3.13.3) и перепробовал все виды структуры папок, но всегда получаю следующее сообщение об ошибке:

CMake Error at C:/Program Files/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR
  GTEST_MAIN_LIBRARY)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.13/Modules/FindGTest.cmake:196 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:2 (find_package)

Кому-нибудь удалось использовать find_package для GTest в Windows? Если да, то как ты это сделал?

1 Ответ

0 голосов
/ 10 января 2020

Сначала вы должны собрать И установить Googletest, используя систему сборки CMake

Затем попробуйте найти файл GTestConfig.cmake в каталоге установки

Теперь вы можете добавить этот путь в переменную CMAKE_PREFIX_PATH .

Таким образом, конфигурируя ваш проект с помощью CMake, он должен иметь возможность find_package (GTest) с использованием обычного процедура поиска .

Так что вам просто нужно использовать GTest :: GTest , чтобы потреблять его (то есть target_link_libraries (.... GTest :: GTest) ).

примечание: для людей, использующих FetchContent / add_subdirectory (googletest), остерегайтесь google / googletest still не указывайте цель ALIAS см. https://github.com/google/googletest/issues/2429

...