MinGW c++.exe异常:CMake无法构建C++项目求解决方案
问题分析
错误核心是mingw32-make.exe: *** INTERNAL: readdir: Invalid argument,说明make工具在读取目录时出现异常。结合你的构建路径C:/Users/huntd/OneDrive - USU/Code/C++/Learning/Post_Transition/build/,大概率和OneDrive路径的特殊字符/同步冲突、旧版MinGW与新版CMake的兼容性有关。
解决方案
1. 转移项目到非OneDrive路径
将项目文件夹从OneDrive目录(如C:/Users/huntd/OneDrive - USU/...)移动到本地普通路径,比如C:/Code/C++/Post_Transition/,重新创建build目录后再运行CMake。
- 原因:OneDrive路径包含空格、
-等特殊符号,且实时同步可能干扰文件系统读取,导致mingw32-make的readdir系统调用失败。
2. 更换MinGW版本
你当前使用的GCC 6.3.0版本老旧,和CMake 3.28存在兼容性问题:
- 卸载现有MinGW,下载安装MinGW-w64(支持64位系统的版本),推荐选择GCC 12.x或13.x等较新的稳定版本。
- 安装时务必勾选
mingw32-make组件,将MinGW的bin目录(如C:/mingw64/bin)添加到系统环境变量PATH最前端,避免和其他工具冲突。
3. 验证工具可用性
手动测试编译器和make工具是否正常工作:
- 打开命令提示符,输入
c++ --version,确认能正常输出GCC版本信息。 - 创建简单测试文件
test.cpp:
#include <iostream> int main() { std::cout << "Hello" << std::endl; return 0; }
- 用g++编译:
g++ test.cpp -o test.exe,检查是否生成可执行文件并能正常运行。 - 手动测试make:创建
Makefile文件:
all: test.exe test.exe: test.cpp g++ test.cpp -o test.exe
运行mingw32-make,若这一步出错,说明make工具本身有问题,需重新安装MinGW。
4. 检查路径与权限
若坚持使用原路径:
- 确保项目路径和build路径仅包含空格、
-等常规符号,无中文或非ASCII字符。 - 以管理员身份运行CMake或终端,避免权限不足导致目录读取失败。
内容的提问来源于stack exchange,提问作者Hoonter
相关产品推荐
相关产品推荐

