CMake kann nicht finden, eine erforderliche Bibliothek
Dies ist mein CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
# Locate GTest
find_package(GTest REQUIRED)
include_directories(/usr/include/gtest)
# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests gtest.cpp)
target_link_libraries(runTests /usr/lib/gtest pthread)
Beim laufen cmake bekomme ich die folgende Fehlermeldung:
michael@michaelFriko:~/workspace/gtest/src$ cmake CMakeLists.txt
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY)
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindGTest.cmake:150 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:8 (find_package)
Wie man dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast es rückwärts. Die
find_package
anrufen soll, um den Speicherort der gtest-Bibliothek für Sie. Sie nicht brauchen, um manuell geben Sie die include-und Bibliothek-Pfade mehr:Werfen Sie einen Blick auf die
FindGTest.cmake
in Ihrem CMake-Module-Verzeichnis für details.Das problem warum du die Fehlermeldung ist, dass
find_package(GTest REQUIRED)
nicht finden kann, wird gtest auf Ihrem system. Mit derREQUIRED
parameter, die Sie angefordert CMake zu scheitern sofort, wenn die Bibliothek nicht gefunden werden kann (was ist eigentlich die richtige Sache zu tun).Also, was Sie tun müssen, ist geben
FindGTest
mit den Mitteln zu suchen, Ihre Bibliothek. Leider gibt es keine standard-Weg, dies zu tun, als die Informationen, die benötigt werden, eine Bibliothek zu finden ist, variiert von Bibliothek zu Bibliothek. So haben Sie, um check out die Quelle finden " - Skript.Dies wird Ihnen sagen, dass
FindGTest
stützt sich auf die UmgebungsvariableGTEST_ROOT
die Bibliothek finden. Gesetzt, dass die Umgebungsvariable für den Pfad zu Ihrem gtest installation, re-CMake und Sie sollten in Ordnung sein.Wenn Ihre installation das layout unterscheidet sich von der, die
FindGTest
erwartet, werden Sie wahrscheinlich haben, um Ihre eigenen schreiben finden-Skript statt. Die Skripte finden, dass Schiff mit CMake sind in der Regel Recht gut, aber manchmal sind Sie einfach nicht auf bestimmte Plattformen out-of-the-box. Wenn Sie können, kommen mit einem patch, der fügt Unterstützung für Ihre Plattform zu erhalten, ist es normalerweise kein problem es zu bekommen, integriert mit den offiziellen CMake-Verteilung.Beachten Sie, dass, wenn Sie beabsichtigen zu bauen gtest selbst (anstelle der Verwendung der Binärdateien, sofern von Ihrem Betriebssystem) verwenden Sie die find-Skript ist nicht die beste Idee in den ersten Platz. Sollten Sie eine importierte Ziel statt.
GTEST_ROOT
müsste/usr
. Das Skript verwendetinclude
undlib
als Suffixe für include-und lib-Verzeichnis, bzw.,, so dass Sie sollten in Ordnung sein.gtest
unter/usr/lib
? Denn das wird nicht funktionieren. Sie müssen dielibgtest.*
Dateien in/usr/lib/
direkt, nicht in einem Unterverzeichnis.cmake -DGTEST_LIBRARIES:FILEPATH=/usr/lib/gtest/libgtest.a <path_to_source>
. Alternativ können Sie auch geben Sie diese Werte in die interaktive Eingabeaufforderung vonccmake
odercmake-gui
.Zu installieren, müssen Sie den Google-Test-Framework.
Unter Debian/Ubuntu:
Quelle: https://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/