Вы получили это назад. Предполагается, что вызов find_package
должен найти местоположение библиотеки gtest для вас. Вам не нужно будет вручную указать пути включают в себя и библиотеки больше:
# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests my_test.cpp)
target_link_libraries(runTests ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
Посмотрите на FindGTest.cmake
в вашем CMake модули каталога для деталей.
Проблема, по которой вы получили сообщение об ошибке, заключается в том, что find_package(GTest REQUIRED)
не может найти gtest в вашей системе. С параметром REQUIRED
вы запросили CMake немедленно выполнить сбой, если библиотека не может быть найдена (что на самом деле является правильным решением здесь).
Так что вам нужно предоставить FindGTest
, чтобы найти вашу библиотеку. К сожалению, нет стандартного способа сделать это, так как информация, необходимая для поиска библиотеки, варьируется от библиотеки к библиотеке. Поэтому вам придется проверить источник скрипта find.
Это скажет вам, что FindGTest
полагается на переменную окружения GTEST_ROOT
, чтобы найти ее. Установите эту переменную среды на путь вашей установки gtest, повторно запустите CMake, и все будет в порядке.
Если макет вашей установки отличается от того, который FindGTest
ожидает, возможно, вам придется написать собственный скрипт поиска. Скрипты поиска, которые поставляются с CMake, обычно неплохие, но иногда они просто не работают на определенных платформах из коробки. Если вы можете придумать патч, который добавит поддержку вашей платформы, обычно нет проблем, чтобы интегрировать его с официальным дистрибутивом CMake.
Обратите внимание, что если вы намереваетесь создавать gtest самостоятельно (вместо использования двоичных файлов, предоставляемых вашей операционной системой), используя сценарий поиска, это не лучшая идея в первую очередь. Вместо этого вы должны использовать imported target.
Я установил GTEST заголовки в/USR/выслать ему/GTEST и библиотеки в/USR/Lib/GTEST. Так что же такое GTEST_ROOT? Я все еще смущен этим. – friko
Предполагая, что вы используете [сценарий поиска от CMake 2.8.11] (http://cmake.org/gitweb?p=cmake.git;a=blob;f=Modules/FindGTest.cmake;h=d531dd12d90fc0bdbb2fba424c448f4e9f69f4bf;hb = 0ad0c37206fce114c4e4c31f5270b53e181ab3c2), ваш 'GTEST_ROOT' должен быть'/usr'. Этот скрипт использует 'include' и' lib' в качестве суффиксов для include и lib, соответственно, поэтому вы должны быть в порядке. – ComicSansMS
export GTEST_ROOT =/usr после этой команды мой cmake по-прежнему терпит неудачу по той же причине .. – friko