I am trying to use GoogleTest to test a simple function, but as I run make
in my build folder, the compiler throws Undefined Reference
error messag
Put the libgtest.a
after your object files
If you are doing things manually instead of with CMake, make sure to do:
g++ main.cpp googletest/build/lib/libgtest.a
instead of:
g++ googletest/build/lib/libgtest.a main.cpp
Here's a full working example I've tested with: https://askubuntu.com/questions/97626/how-to-install-googletest/1295185#1295185
This problem is not exclusive to GoogleTest: I can also reproduce it with a minimal library example like this one and Eli explainss the ordering rules which I don't have the patience to learn right now.
Your setup looks to be almost correct. However, you're needing to have 2 separate main
functions; one for the real executable Proj2
and another with the gtest includes and functions for the test executable unit-test
.
You could do this by having 2 different main.cpp files, say main.cpp and test_main.cpp. The one you've shown would be test_main.cpp, and would be included in the add_executable(unit-test ...
command.
Your new main.cpp would have no references to gtest, either includes or functions.
From linker errors it is obvious that you did not link gtest library to your test program.
See Primer:
To write a test program using Google Test, you need to compile Google Test into a library and link your test with it. ...
Just see this doc for details about your compiler and system.