Masz go od tyłu. Wywołanie find_package
powinno znaleźć dla ciebie lokalizację biblioteki gtest. Nie trzeba będzie ręcznie określić ścieżki include i bibliotek już:
# 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)
Spójrz na FindGTest.cmake
w swojej CMake moduły katalogu o szczegóły.
Problem z tym, dlaczego komunikat o błędzie jest następujący: find_package(GTest REQUIRED)
nie może znaleźć gtest w systemie. Za pomocą parametru REQUIRED
zażądałeś, aby program CMake natychmiast poniósł niepowodzenie, jeśli nie można znaleźć biblioteki (co właściwie jest właściwym rozwiązaniem).
Musisz więc podać FindGTest
za pomocą środków do zlokalizowania biblioteki. Niestety, nie ma standardowego sposobu, aby to zrobić, ponieważ informacje potrzebne do znalezienia biblioteki różnią się w zależności od biblioteki. Musisz więc sprawdzić źródło skryptu wyszukiwania.
To powie Ci, że FindGTest
polega na zmiennej środowiskowej GTEST_ROOT
, aby znaleźć bibliotekę. Ustaw tę zmienną środowiskową na ścieżkę do instalacji gtest, ponownie uruchom CMake i powinno być dobrze.
Jeśli układ Twojej instalacji różni się od tego, którego oczekuje FindGTest
, być może będziesz musiał zamiast tego napisać własny skrypt znajdowania. Skrypty do znalezienia dostarczane z CMake są zazwyczaj całkiem dobre, ale czasami po prostu nie działają na niektórych platformach po wyjęciu z pudełka. Jeśli możesz wymyślić poprawkę, która dodaje obsługę twojej platformy, zwykle nie ma problemu z integracją jej z oficjalną dystrybucją CMake.
Należy pamiętać, że jeśli zamierzasz sam zbudować gt (zamiast używać plików binarnych dostarczonych przez system operacyjny), użycie skryptu wyszukiwania nie jest najlepszym pomysłem. Zamiast tego należy użyć wartości imported target.
Mam zainstalowany numeru GTEST nagłówków do/usr/inculde/numeru GTEST i biblioteki do/usr/lib/numeru GTEST. Czym jest GTEST_ROOT? Nadal jestem z tym zdezorientowany. – friko
Zakładając, że używasz [skryptu znajdowania z CMake 2.8.11] (http://cmake.org/gitweb?p=cmake.git;a=blob;f=Modules/FindGTest.cmake;h=d531dd12d90fc0bdbb2fba424c448f4e9f69f4bf;hb = 0ad0c37206fce114c4e4c31f5270b53e181ab3c2), twój 'GTEST_ROOT' musiałby być'/usr'. Ten skrypt używa "include" i "lib" jako sufiksów odpowiednio dla katalogu include i lib, więc powinieneś być w porządku. – ComicSansMS
export GTEST_ROOT =/usr po tym poleceniu mój cmake nadal kończy się niepowodzeniem z tego samego powodu .. – friko