CMake不是Qt Creator自带工具,必须手动安装并配置:需在系统PATH中可用、在Qt Creator中注册CMake路径、创建匹配的Kit(含编译器/Qt版本/CMake三者)、CMakeLists.txt中正确调用find_package和target_link_libraries。

CMake 不是 Qt Creator 自带的构建工具,必须手动安装并显式配置。Qt Creator 本身只负责调用它,不提供内置 CMake 二进制文件。
确认 CMake 已安装且可被系统识别
Qt Creator 启动时不会自动扫描 CMake,它只读取你明确指定的路径或依赖系统 PATH。常见失败现象是新建 CMake 项目时提示 “CMake not found” 或构建步骤直接跳过。
- 在终端/命令行运行
cmake --version,必须有输出(建议 ≥ 3.14,低于 3.20 可能缺失 Qt6 的某些自动检测逻辑) - 如果命令失败,说明未安装或未加入
PATH;Windows 用户尤其要注意安装时勾选 “Add CMake to the system PATH for all users” 或 “for the current user” - macOS 用户若用 Homebrew 安装,确保
/opt/homebrew/bin(Apple Silicon)或/usr/local/bin(Intel)在PATH中 - Linux 用户检查是否安装了
cmake包(如 Ubuntu:运行sudo apt install cmake)
在 Qt Creator 中注册 CMake 工具
这一步常被跳过,导致后续 Kit 无法关联到 CMake —— 即使系统能识别,Qt Creator 仍会报 “No CMake tool configured”。
CMake 4.3.2 Windows x86_64 历史版本安装包,适合旧项目兼容、构建环境回退、CMakeLists.txt 迁移验证、Visual Studio/Ninja/Makefile 生成器测试和 C/C++ 项目维护。
- 打开 工具 → 选项 → 构建和运行 → CMake
- 点击 添加,选择
CMake可执行文件路径(例如 Windows 上通常是C:/Program Files/CMake/bin/cmake.exe) - 可选:勾选“设为默认”,这样新建 Kit 时会自动绑定该 CMake 实例
- 注意:不要试图用 Qt 自带的
qmake路径去“伪装”成 CMake —— 它们完全不兼容
创建可用的 Kit(编译套件)
Kit 是 Qt Creator 的核心抽象,它把编译器、Qt 版本、CMake 工具三者绑在一起。缺一不可,且版本需匹配。
- 进入 工具 → 选项 → 构建和运行 → 构建套件
- 点击 添加,填入名称(如
Desktop Qt 6.5.3 MinGW 64bit (CMake)) -
编译器:必须是你已配置好的
MinGW或MSVC,不能留空或选错位数(x86/x64) -
Qt 版本:必须指向实际安装的 Qt 目录(如
C:/Qt/6.5.3/mingw_64),且该目录下要有lib/cmake/Qt6子目录 -
CMake 工具:从下拉框中选择你上一步注册的那个
CMake实例 - 保存后,右侧状态栏应显示全部绿色对勾;若某项标黄,说明路径不对或组件缺失
CMakeLists.txt 必须显式启用 Qt 模块
即使 Kit 配置正确,空的 CMakeLists.txt 或只写 project() 的文件,依然无法链接 Qt 库——Qt Creator 不会自动注入 Qt 相关逻辑。
- 最简有效模板开头至少包含:
cmake_minimum_required(VERSION 3.16) project(myapp LANGUAGES CXX) find_package(Qt6 REQUIRED COMPONENTS Core Widgets) qt_standard_project_setup() add_executable(myapp main.cpp) target_link_libraries(myapp PRIVATE Qt6::Core Qt6::Widgets)
find_package 的版本号要 ≤ 你 Kit 中 Qt 版本号(如 Qt 6.5.3 就写 Qt6,不是 Qt6.5)find_package(Qt5 REQUIRED COMPONENTS Core Widgets),并确保 CMAKE_PREFIX_PATH 指向 Qt5 安装根目录CMakeLists.txt 里 find_package 和 target_link_libraries 写对,才是真能跑起来的最小闭环。漏掉任意一环,都会卡在“构建成功但无输出”或“undefined reference”这类静默失败上。

















