最近被一个googletest的使用憋了三天,后来悲催的发现和gtest没有关系,原来是cmake的原因。记录一下,希望以后不要再犯。
问题描述:
调用gtest方法:
aux_source_directory(. DIRSRCS)
enable_testing()
find_package(GTest REQUIRED)
add_executable(test-sample ${DIRSRCS})
message("$CMAKE_THREAD_LIBS_INIT")
target_link_libraries(
test-sample GTest::GTest GTest::Main sender receiver
adframework adpublic log4cxx rt boost_thread
${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}
)
add_test(NAME sampleTest COMMAND test-sample)
使用cmakelist调用googletest报错如下:
cannot find -lGTest::GTest
cannot find -lGTest::GMain
问题的解决:
本以为是libgtest.a libgtestmain.a 安装路径不对,或是没有安装成功。后来发现排查错误发现一切正常。
再检查发现安装了cmake的多个版本,导致gtest库找不到。
1 完整卸载所有版本的cmake,记住,必须要完整。卸载方法如下:
(1) sudo apt-get remove cmake
(2) sudo apt purge cmake*
(3) sudo apt-get autoremove cmake (该语句用来卸载掉老的版本)
(4) 删除usr/local/lib下面的cmake_x.x文件夹(例如cmake_3.5),这个是为了卸载掉编译的版本,
/usr/local/share/cmake* 、/usr/local/bin/cmake*等,执行以下命令:
sudo rm -rf /usr/local/share/cmake*
完全删除后,通过以下语句查看是否卸载完整:
cmake --version
如果失败,则证明卸载完成。
2 安装cmake,试验了集中方法,这个博客介绍的最靠谱:https://blog.csdn.net/l1216766050/article/details/77513045
3 重新安装googletest,目前这篇参考文件https://blog.csdn.net/ljttianqin/article/details/78543235的安装方法一直报错:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
使用https://blog.csdn.net/qq_22764813/article/details/83378457方法并为解决。采用以下方法可完整安装,亲测有效:
https://blog.csdn.net/qq_26437925/article/details/68947498
以上步骤完成后,即可实现结局上面的问题。11:58分解决的,兴奋了好久没睡着。
希望对遇到和我一样的问题的人有所帮助。