Gtest: Références non définies
Je suis en train d'utiliser GoogleTest pour tester une fonction simple, mais comme je l'ai exécuter make
dans mon dossier de création, le compilateur renvoie Undefined Reference
messages d'erreur chez moi. J'ai référencé le gtest fichier d'en-tête, donc je ne suis pas sûr de ce qui est mal. Des idées? Je suis nouveau à l'ensemble du sujet de unix et de tests unitaires , donc je pourrais très bien être absent quelque chose de simple. Merci à l'avance!
Messages D'Erreur:
CMakeFiles/Proj2.dir/main.cpp.o: In function `main':
main.cpp:(.text+0x1e): undefined reference to `testing::InitGoogleTest(int*, char**)'
main.cpp:(.text+0x23): undefined reference to `testing::UnitTest::GetInstance()'
main.cpp:(.text+0x2b): undefined reference to `testing::UnitTest::Run()'
collect2: error: ld returned 1 exit status
main.cpp
#include "gtest/gtest.h"
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Test.cpp
#include "gtest/gtest.h"
#include "Testable.h"
TEST(GetTwoTest, Two) {
EXPECT_EQ(2, GetTwo());
}
Testable.cpp
#include "Testable.h"
int GetTwo() {
return 3;
}
Voici mon CMakeLists.txt fichier:
cmake_minimum_required(VERSION 2.6)
SET(CMAKE_CXX_FLAGS "-std=gnu++11") #Turn on C++11 Support
set(FILES_TO_TEST Testable.cpp)
set(UNIT_TESTS Test.cpp)
set(MAIN_FILE main.cpp)
add_subdirectory(gtest) #Build all the gtest stuff
include_directories(gtest/include)
include_directories(.)
add_library(codeToTest ${FILES_TO_TEST})
add_executable(Proj2 ${MAIN_FILE})
target_link_libraries(Proj2 codeToTest)
add_executable(unit-test ${UNIT_TESTS})
target_link_libraries(unit-test gtest gtest_main rt pthread codeToTest)
source d'informationauteur Vance
Vous devez vous connecter pour publier un commentaire.
Votre installation semble être presque correct. Cependant, vous avez besoin d'avoir de séparer les 2
main
fonctions, une pour le réel exécutableProj2
et l'autre avec le gtest comprend et fonctions pour le test exécutableunit-test
.Vous pouvez faire ceci en avoir 2 différents main.cpp fichiers, dire main.cpp et test_main.cpp. Celui que vous avez démontré, test_main.cpp et serait inclus dans le
add_executable(unit-test ...
commande.Votre nouveau main.cpp aurait pas de références à gtest, comprend ou fonctions.
À partir de l'éditeur de liens d'erreurs, il est évident que vous n'avez pas de lien gtest bibliothèque à votre programme de test.
Voir http://code.google.com/p/googletest/wiki/Primer
Viens de voir ce doc pour plus de détails au sujet de votre compilateur et du système.