使用Google Test与CMake测试时遇GTest库查找错误求助
解决Debian 9下CMake找不到GTest库的问题
嘿,我之前在Debian 9上折腾Google Test+CMake时也碰到过一模一样的错误!给你几个亲测有效的解决思路:
1. 确认Google Test库是否真的被正确编译安装
Debian 9官方源里的libgtest-dev包只包含源码文件,不会自动编译成可链接的静态库,这是很多人踩坑的点!你需要手动编译安装:
- 先确保依赖已安装:
sudo apt-get update && sudo apt-get install cmake libgtest-dev - 进入GTest源码目录编译:
cd /usr/src/gtest sudo cmake CMakeLists.txt sudo make - 将生成的静态库复制到系统库目录:
sudo cp libgtest.a libgtest_main.a /usr/lib
完成这步后,重新运行CMake应该就能找到库文件了。
2. 手动指定GTest库路径(如果编译后仍找不到)
如果你已经编译了库但CMake还是识别不到,可能是你的CMake版本(3.7)对GTest的查找逻辑有小问题,可以在CMakeLists.txt里手动指定库路径:
# 先手动设置库文件路径 set(GTEST_LIBRARY /usr/lib/libgtest.a) set(GTEST_MAIN_LIBRARY /usr/lib/libgtest_main.a) # 再执行查找 find_package(GTest REQUIRED)
或者直接指定GTest的编译路径:
find_package(GTest REQUIRED PATHS /usr/src/gtest)
3. 将GTest源码作为项目子目录(更稳定的方案)
如果不想依赖系统安装的GTest,推荐直接把GTest源码嵌入到你的项目中,这样能避免环境差异问题:
- 把Google Test的源码克隆到你的项目根目录(比如命名为
googletest) - 在你的
CMakeLists.txt中添加:add_subdirectory(googletest) include_directories(${GTEST_INCLUDE_DIRS}) - 链接测试程序时,直接关联GTest的目标:
target_link_libraries(你的测试程序名称 gtest gtest_main pthread)
内容的提问来源于stack exchange,提问作者Yuriy Rusinov
相关产品推荐
相关产品推荐

