在clion中需通过settings | build, execution, deployment | toolchains配置工具链:添加visual studio(windows)、clang(macos/linux)或mingw(windows)类型,下拉选择ninja等cmake生成器,并手动指定c/c++编译器路径,确保ninja在path中且make program字段填入其绝对路径。

怎么在 CLion 里选中 Ninja、MSVC 或 Clang 编译器
CLion 默认会尝试自动探测系统中可用的编译器,但实际项目中常需要手动指定——比如用 Ninja 加速构建,或切换到 MSVC 编译 Windows 原生二进制,又或者用 clang 做静态分析。这些不是靠改 CMakeLists.txt 实现的,而是通过 Toolchain 配置生效。
关键点在于:CMake 生成器(Generator)和底层编译器(Compiler)是两个层级。比如你选了 Ninja 生成器,还得告诉 Ninja 具体调用哪个 clang++ 或 cl.exe。
- 打开
Settings | Build, Execution, Deployment | Toolchains - 点击
+添加新 Toolchain,类型选Visual Studio(Windows)、Clang(macOS/Linux)或MinGW(Windows) - 在
CMake generator下拉框中选Ninja(推荐)或Visual Studio 17 2022等;注意:选Visual Studio生成器时,CMake generator项会被锁定,无法手动切 Ninja - 确认
C Compiler和CXX Compiler路径正确,例如/usr/bin/clang或C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe
如果你看到 Build failed: CMake Error: Could not create named generator,大概率是 Ninja 没装或不在 PATH 中——CLion 不自带 Ninja,需单独安装并确保终端能直接运行 ninja --version。
为什么 CMAKE_C_COMPILER 在 CMakeLists.txt 里设不生效
很多人在 CMakeLists.txt 开头写 set(CMAKE_C_COMPILER "/usr/bin/gcc-12"),结果构建时还是用了系统默认 gcc。这不是 bug,是 CMake 的缓存机制在起作用:一旦 CMake 第一次成功 configure,CMAKE_C_COMPILER 就被写死进 CMakeCache.txt,后续 set() 调用完全被忽略。
真正可靠的设置方式只有两种:
- 命令行传参:
cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-12 -S . -B build(CLion 底层就是这么调的) - 环境变量:
CC=/usr/bin/gcc-12 cmake -S . -B build,CLion 会在 Toolchain 设置里把CC和CXX自动注入为环境变量
顺带一提:如果同时设置了 -D CMAKE_C_COMPILER 和 CC 环境变量,前者优先级更高;但如果你在 CLion 的 Toolchain UI 里填了编译器路径,它最终也会转成 -D 参数传给 cmake,所以 UI 设置是最稳妥的入口。
远程编译时如何让 CLion 使用 WSL 或 Linux 里的编译器
在 Windows 上用 WSL 远程开发时,常见错误是 CLion 本地配置了 MinGW,却想让 CMake 调用 WSL 里的 gcc。这不能靠“换生成器”解决,必须走远程 Toolchain 流程。
- 先在
Toolchains页面添加一个WSL类型的 Toolchain,填入你的 WSL 发行版名称(如Ubuntu-22.04) - CLion 会自动识别 WSL 中的
gcc、g++、ninja路径;若未识别,可手动指定/usr/bin/gcc - 在同一个 Toolchain 配置页,勾选
Use WSL并确认 WSL 根路径(通常是/home/xxx) - 关键一步:在
CMake设置页(Build, Execution, Deployment | CMake),把Toolchain下拉框切换为你刚配的 WSL 条目
此时 CLion 会把源码同步到 WSL 路径下,并在 WSL 中执行 cmake 和 ninja。如果看到 Could not connect to WSL,检查 Windows 系统是否启用 WSL2、是否已运行过 wsl -l -v 确认发行版状态。
cmake --build 执行时卡住或报错找不到 ninja
即使你在 Toolchain 里选了 Ninja 生成器,CLion 构建时仍可能报 ninja: command not found 或卡在 [1/1] Re-running CMake...。这不是 CLion 的问题,而是 Ninja 可执行文件没被正确识别。
- 确认 Ninja 安装路径已加入系统
PATH:Windows 用户建议用 官方 Ninja 二进制,解压后把目录加进 PATH;Linux/macOS 用sudo apt install ninja-build或brew install ninja - 在 CLion 的
Toolchains页面,展开你当前使用的 Toolchain,找到CMake generator下方的Make program字段——这里必须显示 Ninja 的绝对路径,比如/usr/bin/ninja;如果显示为空或错误路径,手动填入 - 如果用了自定义 Ninja(如 Qt 自带的),别只改
Make program,还要同步更新CMAKE_MAKE_PROGRAM缓存变量:在CMake设置页的Environment variables区域加一行CMAKE_MAKE_PROGRAM=/path/to/qt/ninja
最隐蔽的坑是:某些预编译 Ninja(尤其是 Qt 提供的)依赖特定版本的 C runtime,和你的 Toolchain 编译器不兼容。这时即使路径对、命令能执行,也会在构建中途静默失败——建议优先使用系统包管理器安装的 Ninja。











