qt creator需手动配置cmake路径并确保版本≥3.14,否则报“cmake generator not found”或编译器识别失败;windows下msvc需重启qt creator以继承环境变量;新建项目须选对模板(如qt widgets application),cmake arguments中必须精确指定dcmake_prefix_path指向qt编译套件目录,并在修改cmakelists.txt后执行“run cmake”刷新解析。

CMake装完不配置,Qt Creator根本找不到它——不是路径没加对,就是版本不匹配,这两点踩中任意一个,新建项目就卡在“CMake generator not found”或直接报CMAKE_C_COMPILER识别失败。
确认CMake是否真被Qt Creator识别
别只信cmake --version能跑通就万事大吉。Qt Creator启动时读的是自己的环境上下文,不是你终端里的PATH。
- 打开Qt Creator → Tools → Options → Kits → CMake,看列表里有没有你安装的CMake路径;如果没有,手动点击“Add”并指向
cmake.exe(Windows)或cmake(Linux/macOS) - 如果路径已存在但灰色不可选,说明Qt Creator检测到该CMake版本低于
3.14(Qt Creator 4.15+要求),此时必须换新版,不能靠“忽略警告”硬上 - Windows下若用MSVC,务必确保CMake路径添加后,再重启Qt Creator——否则它不会继承VS的环境变量,
The C++ compiler is not able to compile a simple test program就是典型表现
新建CMake项目时选错模板,后续改起来很麻烦
Qt Creator里“Plain C++ Application with CMake”和“Qt Widgets Application”底层CMake结构完全不同,混用会导致find_package(Qt6)失败、UI资源不编译、甚至qt_add_executable报错。
CMake 4.3.2 Windows x86_64 历史版本安装包,适合旧项目兼容、构建环境回退、CMakeLists.txt 迁移验证、Visual Studio/Ninja/Makefile 生成器测试和 C/C++ 项目维护。
- 要做带界面的Qt程序,必须选Application → Qt Widgets Application,构建系统选CMake——它会自动生成含
find_package(Qt6 REQUIRED COMPONENTS Widgets)和qt_add_executable的CMakeLists.txt - 如果误选了“Non-Qt Project → Plain C++ Application”,哪怕手动补上Qt模块,也容易漏掉
set(CMAKE_AUTOMOC ON)或set(CMAKE_AUTORCC ON),导致moc/rcc不触发 - Qt 6项目默认要求
CMAKE_CXX_STANDARD设为17或更高,旧模板可能还是11,编译Q_OBJECT类时会静默失败
CMake arguments填错,Qt路径一错全错
Qt Creator里Projects → Build & Run → CMake → CMake arguments不是可有可无的字段,而是决定Qt头文件和库能不能被找到的关键。
- Qt 6.x常用写法:
-DCMAKE_PREFIX_PATH=/path/to/Qt/6.7.3/msvc2019_64(Windows)或/opt/Qt/6.7.3/gcc_64(Linux)——路径必须精确到编译套件目录,不能只写/path/to/Qt/6.7.3 - Windows下若用MinGW,要额外加
-G "MinGW Makefiles",否则CMake默认用Visual Studio Generator,导致mingw32-make找不到生成文件 - Qt 5用户注意:
DCMAKE_PREFIX_PATH要指向Qt5.15.2/5.15.2/msvc2019_64这类子目录,且需配合find_package(Qt5 REQUIRED COMPONENTS Core Widgets),混用Qt6语法会直接报Could not find a package configuration file
Qt Creator里改CMakeLists.txt后不生效?先清缓存再重跑CMake
Qt Creator不会自动重解析修改后的CMakeLists.txt,尤其当你动了project()或find_package()这类顶层指令时,缓存残留会导致奇怪的“找不到target”或“重复定义”错误。
- 右键项目名 → Run CMake(不是Build)——这是强制刷新CMake配置的唯一可靠方式
- 如果仍报错,去构建目录(通常是
build-xxx子文件夹)里删掉CMakeCache.txt和CMakeFiles/整个目录,再点Run CMake - 编辑器里Ctrl+Click跳转
find_package或add_executable失效?说明CMake解析未完成,等右下角状态栏显示“CMake project parsed”后再操作
真正卡住人的从来不是CMake语法本身,而是Qt Creator在后台悄悄缓存了错误的Generator或路径映射——每次改完CMakeLists.txt,记得先Run CMake,而不是直接Build。










