web-dev-qa-db-fra.com

CMake ne trouve pas la bibliothèque requise par GoogleTest dans Ubuntu

Problème similaire ici .

Voici mon CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)

# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

# Add test cpp file
add_executable(foo foo.cpp)

# Link test executable against gtest & gtest_main
target_link_libraries(foo ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)

Et mon foo.cpp:

#include <gtest/gtest.h>

TEST(sample_test_case, sample_test)
{
    EXPECT_EQ(1, 1);
}

int main(int argc, char **argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

Maintenant, tout fonctionne bien avec le compilateur g ++. Cependant, lorsque j'essaie d'utiliser le compilateur de QNX, ntox86-c ++, je rencontre ce problème:

Erreur CMake à /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE): N'A PAS pu trouver GTest (manquant: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY). 

Je suis sur Ubuntu avec le compilateur ntox86-c ++, googletest et cmake-gui.

Ce qui donne?

13
Erich

Le test de Google n'a probablement pas été correctement installé (libgtest-dev peut installer uniquement les fichiers source devant être compilés). J'ai eu le même problème et j'ai suivi les instructions de http://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/

Sudo apt-get install libgtest-dev
Sudo apt-get install cmake # install cmake
cd /usr/src/gtest
Sudo cmake CMakeLists.txt
Sudo make

#copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder
Sudo cp *.a /usr/lib

Cela a fonctionné pour moi.

18
detrick

Comme expliqué par @detrick, le paquet Ubuntu libgtest-dev installe uniquement les sources, vous devez donc créer et installer les bibliothèques vous-même.

Cependant, il existe un moyen beaucoup plus simple de construction et d'installation que les commandes manuelles dans les autres réponses:

Sudo apt install libgtest-dev build-essential cmake
cd /usr/src/googletest
Sudo cmake .
Sudo cmake --build . --target install
2
mrts

Il y a quelque temps, j'ai créé un fichier docker qui me permet de conserver une sorte de recette pour l'installation ultérieure sur google test sur mes systèmes:

apt-get install -y git g++ make cmake 
git clone https://github.com/google/googletest.git
cd googletest
mkdir gbuild && cd gbuild && cmake .. && make
cp -r googletest/include/gtest /usr/local/include
cp gbuild/googlemock/gtest/lib*.a /usr/local/lib
cp gbuild/googlemock/lib*.a /usr/local/lib

J'espère que ça aide :)

0
Arturo Ruiz Mañas