Hai ottenuto indietro. Si suppone che la chiamata find_package
trovi la posizione della libreria gtest per te. Non sarà necessario specificare manualmente i percorsi comprendono e la biblioteca più:
# 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)
Date un'occhiata al FindGTest.cmake
nella CMake Moduli directory per i dettagli.
Il problema per cui è stato visualizzato il messaggio di errore è che find_package(GTest REQUIRED)
non è in grado di trovare gtest sul sistema. Con il parametro REQUIRED
, hai richiesto a CMake di fallire immediatamente se non è possibile trovare la libreria (che in realtà è la cosa giusta da fare qui).
Quindi quello che devi fare è fornire FindGTest
con i mezzi per localizzare la tua biblioteca. Sfortunatamente, non esiste un modo standard per farlo, poiché le informazioni necessarie per trovare una libreria variano da una libreria all'altra. Quindi dovrai controllare la fonte dello script di ricerca.
Questo vi dirà che FindGTest
si basa sulla variabile di ambiente GTEST_ROOT
per trovare la libreria. Imposta quella variabile di ambiente sul percorso della tua installazione gtest, riesegui CMake e dovresti stare bene.
Se il layout del installazione è diversa da quella che FindGTest
aspetta, potrebbe essere necessario scrivere il proprio script di trovare invece. Gli script di ricerca forniti con CMake sono in genere abbastanza buoni, ma a volte semplicemente non funzionano su alcune piattaforme già pronte all'uso. Se riesci a trovare una patch che aggiunga supporto per la tua piattaforma, di solito non è un problema integrarla con la distribuzione ufficiale di CMake.
Si noti che se si intende creare gtest da soli (invece di utilizzare i binari forniti dal sistema operativo) utilizzando lo script di ricerca non è l'idea migliore in primo luogo. Dovresti invece usare un imported target.
Ho installato intestazioni GTEST in/usr/inculde/GTEST e librerie in/usr/lib/GTEST. Allora, qual è il GTEST_ROOT? Sono ancora confuso da questo. – friko
Supponendo che tu stia utilizzando [lo script di ricerca da CMake 2.8.11] (http://cmake.org/gitweb?p=cmake.git;a=blob;f=Modules/FindGTest.cmake;h=d531dd12d90fc0bdbb2fba424c448f4e9f69f4bf;hb = 0ad0c37206fce114c4e4c31f5270b53e181ab3c2), il tuo 'GTEST_ROOT' dovrebbe essere'/usr'. Quello script usa 'include' e' lib' come suffissi rispettivamente per include e lib directory, quindi dovresti stare bene. Esportazione – ComicSansMS
GTEST_ROOT =/usr dopo quel comando il mio cmake fallisce ancora con la stessa ragione .. – friko