Je suis en train de compiler exemple simple gmock sur mon ubuntu vmware (16.04 LTS)/usr/bin/ld: ne peut pas trouver -lgmock sur ubuntu lors de l'exécution programme gmock
et obtenir en dessous de l'erreur tout en faisant "make"
J'ai ci-dessous les fichiers -
"test.h"
class CBasicMath
{
public:
CBasicMath(){}
virtual ~CBasicMath() {}
virtual int Addition(int x, int y);
virtual int Multiply(int x, int y);
virtual int Divide(int x, int y);
};
"test.cpp"
#include "test.h"
int CBasicMath::Addition(int x, int y)
{
return (x + y);
}
int CBasicMath::Multiply(int x, int y)
{
return (x * y);
}
int CBasicMath::Divide(int x, int y)
{
return (x/y);
}
"mocktest.h"
#include "gmock/gmock.h"
#include "test.cpp"
class MockBasicTest : public CBasicMath {
public:
MOCK_METHOD2(Addition, int(int x, int y));
MOCK_METHOD2(Multiply, int(int x, int y));
MOCK_METHOD2(Divide, int(int x, int y));
};
"main.cpp"
#include "mocktest.h"
#include "gtest/gtest.h"
#include "gmock/gmock.h"
TEST(BasicMathTest, testAddition) {
MockBasicTest basictest;
EXPECT_CALL(basictest, Addition(2,3)).Times(0);
// EXPECT_EQ(0, basictest.Addition(2,3));
/*
.Times(5);
EXPECT_EQ(0,basictest.Addition(2,3));
EXPECT_EQ(0,basictest.Addition(2,3));
EXPECT_EQ(0,basictest.Addition(2,3));
EXPECT_EQ(0,basictest.Addition(2,3));
EXPECT_EQ(0,basictest.Addition(2,3));
*/
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
"CMakeLists.txt"
cmake_minimum_required(VERSION 2.6)
# 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 main.cpp)
target_link_libraries(runTests -lgtest -lgmock -lpthread)
Ce sont les étapes que je suivais pour la compilation -
[email protected]:~/Desktop/for_gtest/ajay/gtest/ajay/demo/gmock/simple_demo$ cmake CMakeLists.txt
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ajay/Desktop/for_gtest/ajay/gtest/ajay/demo/gmock/simple_demo
[email protected]:~/Desktop/for_gtest/ajay/gtest/ajay/demo/gmock/simple_demo$
et après que quand je ne fais que je suis confronté à la question
[email protected]:~/Desktop/for_gtest/ajay/gtest/ajay/demo/gmock/simple_demo$ make
Scanning dependencies of target runTests
make[2]: Warning: File 'main.cpp' has modification time 84978 s in the future
[ 50%] Building CXX object CMakeFiles/runTests.dir/main.cpp.o
[100%] Linking CXX executable runTests
/usr/bin/ld: cannot find -lgmock
collect2: error: ld returned 1 exit status
CMakeFiles/runTests.dir/build.make:94: recipe for target 'runTests' failed
make[2]: *** [runTests] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/runTests.dir/all' failed
make[1]: *** [CMakeFiles/runTests.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
[email protected]:~/Desktop/for_gtest/ajay/gtest/ajay/demo/gmock/simple_demo$
Je ne sais pas pourquoi cela «/usr/bin/ld: ne peut pas trouver -lgmock » problème vient même si j'ai installé gmock avec succès. Je suis capable d'exécuter des programmes gtest mais quand j'ajoute gmock je reçois ce problème.
S'il vous plaît aidez-moi à résoudre. Faites-moi savoir pour plus d'informations.
Pouvez-vous afficher la ligne exacte utilisée pour l'édition de liens (make VERBOSE = 1)? –
Quelle ligne? Je suppose que j'ai ajouté tous les fichiers et les lignes utilisées pour compiler le code. Pouvez-vous s'il vous plaît m'aider à comprendre ce que vous cherchez et j'ai raté – user2564083