运行cmake --help可查看当前环境所有可用生成器,其中带星号(*)的是默认项;不同系统和cmake版本支持的生成器差异大,必须严格匹配输出中的名称,且需确保对应编译器和工具链已正确安装并加入path。

直接用 -G 参数指定,不加就走系统默认生成器——但默认值往往不是你想要的,尤其在 Windows 上容易默认选 Visual Studio 而你实际装的是 Ninja 或 MinGW。
怎么查当前环境支持哪些生成器
运行 cmake --help,输出里会列出所有可用生成器,带星号(*)的是当前平台默认项。注意:不同 CMake 版本、不同操作系统列出的生成器差异很大,比如 Visual Studio 17 2022 在旧版 CMake 中根本不存在,而 Ninja 在 macOS 和 Linux 下通常需要额外安装 ninja-build 包。
-
cmake --help输出中 “Generators” 小节才是权威列表,别信网上过时教程写的名称 - Windows 上若没装 VS,却看到默认是
Visual Studio 16 2019,说明 CMake 没检测到编译器,此时强行生成会失败 - macOS 上
Xcode生成器需 Xcode 命令行工具已安装(xcode-select --install),否则报错Could not find any instance of Visual Studio这类误导性提示
常见生成器写法与典型场景
生成器名称必须完全匹配 cmake --help 输出中的字符串,大小写、空格、年份都不能错。Windows 上 VS 版本号和位数要对应真实安装情况;Linux/macOS 下优先选 Ninja,比 Makefiles 快得多且输出更干净。
组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
- Windows + VS2022 64 位:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 - 跨平台轻量构建:
cmake -S . -B build -G Ninja(前提是ninja命令在$PATH中) - Linux/macOS 传统方式:
cmake -S . -B build -G "Unix Makefiles" - macOS + Xcode:
cmake -S . -B build -G Xcode(生成 .xcodeproj,不是 .xcworkspace)
为什么指定生成器后还是报错“generator not found”
错误信息通常是 CMake Error: Could not create named generator,本质不是 CMake 不认识名字,而是它找不到配套工具链。生成器和编译器是绑定的,Ninja 本身不编译,它只调用底层编译器。
- 装了 Ninja 但没装 GCC/Clang,
cmake -G Ninja会卡在检测阶段,报错指向编译器缺失而非 Ninja - Windows 上用
MinGW Makefiles生成器,但mingw32-make没加进系统 PATH,CMake 会静默 fallback 到其他生成器或失败 -
CMAKE_GENERATOR环境变量可设默认值(如set CMAKE_GENERATOR=Ninja),但仅对后续未显式传-G的命令生效,且不能绕过工具链检查
生成器选错最常导致的不是语法错误,而是构建时突然找不到 cl.exe、g++ 或 ninja —— 它们不是 CMake 自带的,得你亲手装好并确保能被调用。别跳过验证步骤:生成完先看 build/CMakeCache.txt 里 CMAKE_GENERATOR: 和 CMAKE_C_COMPILER: 的值是否符合预期。










