结合Conan与CMake使用GTest出现test_properites_mutex_未声明错误如何解决
问题根因
你当前的CMake配置同时引入了两套GTest依赖:通过Conan安装的1.11.0版本GTest,以及通过FetchContent拉取的其他版本GTest源码。两个版本的内部实现定义存在差异,编译时头文件引用、符号匹配出现混乱,最终触发test_properites_mutex_未声明的编译错误。
修复步骤
- 移除CMakeLists中所有FetchContent拉取GTest的相关代码,你已经通过Conan配置了指定版本的GTest,无需额外拉取源码编译。修改后的测试相关CMake配置如下:
# [...] include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup() # [...] enable_testing() add_executable(MyProjectName test.cpp) target_link_libraries(MyProjectName ${CONAN_LIBS} gtest) # 注意add_test的COMMAND参数要和add_executable的目标名一致,否则运行测试时会找不到执行文件 add_test(NAME test COMMAND MyProjectName)
- 确认你的Conan配置文件(conanfile.txt或conanfile.py)的依赖项中已经添加了
gtest/1.11.0,确保执行Conan安装时会正确导入对应版本的GTest库。 - 完全删除本地旧的build编译缓存目录,重新执行Conan安装、CMake生成、编译流程,避免旧缓存的冲突文件干扰编译。
内容的提问来源于stack exchange,提问作者Xwilarg
相关产品推荐
相关产品推荐

