Hej
Mam projekt w do którego dodałem sobie testy jednostkowe przy użyciu Google Test. Wszystko działało pięknie do czasu aż ostatnio chciałem dodać jedną flage kompilacji (-gdwarf-4) w projekcie, zregenerowałem Makefile z cmake i przy kompilacji otrzymałem radosny błąd :
libgtest.a(gtest-all.cc.o): In function
llvm::convertible_fwd_ostream::~convertible_fwd_ostream()': gtest-all.cc:(.text._ZN4llvm23convertible_fwd_ostreamD1Ev[_ZN4llvm23convertible_fwd_ostreamD1Ev]+0x20): undefined reference to
llvm::~raw_os_ostream()'
Niestety po usunięciu dodanej flagi błąd pozostał. Build system mam spreparowany w nastepujacy sposob. Aplikacja właściwa tworzona jest przez taki CMakeFile.txt :
file(GLOB SOURCE_LST ".*h" "*.cpp" "*.hh")
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
add_library(AppLib STATIC ${SOURCE_LST})
add_executable(App "main.cpp")
target_link_libraries(App AppLib)
A testy przez taki :
enable_testing()
## detect files
# files inside of project
file(GLOB TEST_SOURCE_LST ".*h" "*.cpp" "*.hh")
# Google test
find_package(GTest REQUIRED)
# add them into project
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS})
# create binary
add_executable(UTester ${TEST_SOURCE_LST})
target_link_libraries(UTester AppLib)
target_link_libraries(UTester ${GTEST_BOTH_LIBRARIES}
pthread)
add_test(initial UTester)
Próbowałem już zmieniać kolejność dodawania bibliotek ale też nie działa (stąd target_link_libraries rozbite na dwa, gdy jest pojedyncze też nie działa).
Próbowałem dodawać brakujące biblioteki żeby rozwiązać powstałe UR. Dla podanego błędu dodałem bibliteke libLLVMSupport.a i flage -ldl ale poskutkowało to tylko zmianą błedu na koleny UR :
comparatorTest.cpp undefined reference to `testing::MakeAndRegisterTestInfo(char const*, char const*, char const*, char const*, testing::CodeLocation, void const*, void ()(), void ()(), testing::TestFactoryBase*)'
Macie może jakiś pomysł jak to naprawić? I co mnie bardziej ciekawi czemu to się popsuło? Nie sądze żeby przyczyną było dodanie flagi którą potem usunołem. Przy czym podkreślam że wcześniej te testy działały.