CLion通过Toolchain配置指定编译器,而非修改CMake选项;需在Settings→Build→Toolchains中选择MinGW(默认捆绑)、MSVC(自动探测Visual Studio)或Clang(Windows推荐clang-cl模式),并手动重载CMake项目以生效。

CLion 本身不直接“设置 CMake 编译器”,而是通过配置 Toolchain(工具链)来指定底层使用的编译器(如 g++、cl.exe、clang++),CMake 会自动从该工具链中提取编译器路径并用于生成构建系统。关键不是改 CMake,而是选对工具链。
怎么在 CLion 里选 MinGW / MSVC / Clang 工具链
工具链决定编译器,不是 CMake 选项能绕开的。CLion 的 Settings | Build, Execution, Deployment | Toolchains 是唯一正解入口。
- Windows 上默认显示
Bundled MinGW(即 MinGW-w64 13.1,带g++.exe和gdb.exe),点开就能用,无需额外安装 - 若已装 Visual Studio 2019/2022,选择
Visual Studio类型工具链,CLion 会自动探测cl.exe路径和 SDK 版本 - 选
Clang工具链时注意:官方只推荐用 LLVM 官方 Windows 版 + MSVC 工具链配合(即clang-cl模式),纯 GNU 风格的clang++在 Windows 上容易找不到标准库头文件 - 自定义 MinGW 安装必须包含
mingw32-gcc-g++或mingw64-gcc-g++包,否则 CLion 检测不到g++可执行文件
CMakeLists.txt 里要不要写 set(CMAKE_CXX_COMPILER ...)
不要手动写。CLion 的工具链配置会覆盖 CMakeLists.txt 中的硬编码设置,强行写反而会导致 CMake configure 失败或与 IDE 状态不一致。
-
set(CMAKE_CXX_COMPILER "g++")这类语句在 CLion 项目中属于冗余甚至有害操作 - 唯一需要干预的情况是交叉编译(如 ARM Cortex-M),此时应在工具链中指定完整路径,而非在 CMakeLists.txt 里覆盖
- 如果 CMake 报错
Could not find compiler set in environment variable CC,说明工具链未正确配置或环境变量污染,不是 CMakeLists.txt 缺设置
为什么改了工具链,CMake 还在用旧编译器
常见于未触发 CMake 重新配置。CLion 不会自动 reload CMake 项目,除非你主动操作或开启 Auto-Reload。
- 修改工具链后,必须点击右上角
Reload CMake project(小刷新图标)或按Ctrl+Shift+O手动重载 - 检查
cmake-build-debug/CMakeCache.txt文件里的CMAKE_CXX_COMPILER:FILEPATH=...是否已更新为你选的工具链路径 - 如果仍不对,删掉整个
cmake-build-*目录再 reload —— CMake 缓存有时会顽固地保留旧状态 - 注意:多个 CMake 配置文件(Debug/Release)可能绑定了不同工具链,需逐个检查其绑定的 Toolchain 设置
最容易被忽略的是:工具链配置是 per-project 的,但新项目默认继承全局设置;如果你在某个项目里改过 Toolchain 却没保存为默认,下一个项目还是会回到 Bundled MinGW。别假设“改过一次就永远生效”。


















