You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

结合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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:48:00