Windows下CLion CMake项目编译提示std命名空间不存在mutex成员怎么办
问题根因
你当前使用的MinGW工具链采用了win32线程模型,该模型原生不支持C++标准库中的std::mutex、std::thread等并发相关接口,是导致编译报错的核心原因。
解决方案
方案一(推荐):更换为posix线程模型的MinGW版本
- 卸载当前使用的win32线程模型MinGW,重新下载MinGW-W64安装包,安装时线程模型(Thread model)选项选择
posix,不要选择默认的win32 - 安装完成后打开CLion设置,进入「构建、执行、部署 > 工具链」,将新安装的posix版本MinGW路径配置为当前项目的工具链
- 右键项目重新加载CMake缓存,清理旧的构建目录后重新编译即可解决报错
方案二:修正CMake标准配置(可先尝试)
你当前的CMake配置仅指定了C++标准版本,没有强制要求编译器必须启用该标准,可能存在标准配置不生效的问题,可先修改CMakeLists.txt追加以下两行配置后重试:
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF)
如果修改后仍报错,则说明确实是MinGW线程模型不兼容,需按照方案一更换工具链。
验证方法
配置完成后可在MinGW的bin目录下打开终端,执行命令g++ -v,查看输出中的Thread model字段,显示为posix即为配置正确。
内容的提问来源于stack exchange,提问作者Sodrul Amin Shaon
相关产品推荐
相关产品推荐

