先手动添加MinGW编译器路径,如E:\Qt\Tools\mingw1120_64\bin\g++.exe;再确保Kit绑定正确的Desktop Qt版本、匹配位数的make工具(mingw32-make.exe)及GDB调试器,并清理旧构建文件重试qmake。

Kit里找不到MinGW编译器怎么办
Qt Creator启动后自动扫描系统PATH里的编译器,但Windows上常因PATH未设或路径含空格/中文导致扫描失败。打开工具 → 选项 → 构建和运行 → 编译器,如果MinGW GCC列表为空,说明它根本没找到任何g++.exe或gcc.exe。
手动添加时,路径必须指向mingwXX_X-bit\bin目录下的可执行文件,例如:E:\Qt\Tools\mingw1120_64\bin\g++.exe。注意别选错位数(32/64)——mingw73_32套件必须配32位编译器,否则后续qmake会报错不兼容。
- 确认
g++.exe真实存在:在资源管理器中直接打开该路径,双击运行看是否弹出“无法启动此程序”提示 - 避免路径含中文或空格:如
C:\Program Files\容易触发Qt Creator解析失败,建议重装到D:\Qt\Tools\这类干净路径 - 不要复用MSVC的
cl.exe路径填进MinGW编译器栏——类型不匹配会导致Kit标黄且构建直接跳过
“mingw32-make.exe无法启动”怎么定位
这个错误不是Qt Creator本身的问题,而是它调用mingw32-make.exe时系统找不到该命令。关键要分清:是PATH里没有,还是Kit里指错了路径。
先在CMD里运行where mingw32-make。如果返回空,说明PATH没配;如果返回路径,再检查Kit里构建套件 → Make字段是否填了同一路径。常见错误是填了mingw32-make但漏掉.exe后缀,或者填的是make.exe(MinGW不用这个)。
Qt Creator 18.0.2 Windows x86_64 历史版本安装包,适合需要旧版本 IDE、旧项目兼容、Qt/C++ 项目维护、构建套件配置和调试环境回退的用户使用。
- MinGW安装包自带
mingw32-make.exe,不是make.exe——后者属于Cygwin或Linux环境 - Qt在线安装器默认勾选“MinGW”,但实际只装了编译器,没装make工具;需单独勾选“MinGW Tools”组件
- 64位MinGW套件对应
mingw32-make.exe仍可用,但某些旧版Qt要求mingw64-make.exe,需按Kit名称匹配
Kit显示“Invalid”却能编译?小心隐性错配
Kit状态栏显示黄色感叹号(Invalid),但项目仍能编译成功,这是最危险的情况。它意味着Qt Creator内部配置链断裂,比如编译器和调试器版本不一致,或Qt版本与MinGW ABI不兼容(如Qt 5.15.2用MinGW 8.1,但你配了MinGW 11.2)。
典型表现是:qmake能跑,但生成的Makefile里$(MAKE)变量为空,或者链接时突然报undefined reference to `WinMain'。这是因为qmake根据Kit信息决定子系统参数(-mwindows或-mconsole),错配后入口点声明失效。
- 检查Kit绑定的Qt版本是否带“Desktop”前缀:
Desktop Qt 5.15.2 MinGW 64-bit有效,Qt 5.15.2 MinGW 64-bit无效 - 调试器必须匹配编译器:MinGW Kit只能配
GDB,不能选CDB(那是给MSVC用的) - 清理构建目录再重新qmake——旧Makefile残留会掩盖Kit配置问题
为什么改完配置还是报错“Cannot run compiler clang++”
这个错误说明当前Kit绑定了clang++,但你的系统根本没装LLVM。Qt Creator不会主动阻止你选择不存在的编译器,它只在构建时才校验。
常见原因是:打开别人项目时,Qt Creator自动继承了对方的Kit配置,而你本地只有MinGW。解决方法不是装clang,而是切换Kit——点击左下角Projects模式,在Build & Run → Kits里选一个已验证有效的MinGW Kit,比如Desktop Qt 5.x.x MinGW x-bit。
- 不要在Kit里手动把编译器改成
clang++路径:即使你装了LLVM,Qt对Clang支持有限,尤其Windows下调试体验差 - 项目.pro文件里若写了
QMAKE_CXX = clang++,需删掉或注释,否则qmake仍会强制调用clang - 新建项目时,默认Kit由Qt Creator根据已安装组件自动推荐,但旧项目不会自动切换,必须手动指定

















