需手动安装并配置CMake:Windows从cmake.org下载MSI并勾选添加PATH;macOS/Linux需确认which cmake路径正确并在CLion设置中指定,版本建议≥3.20。

CLion 启动时提示 Cannot find CMake 怎么办
CLion 本身不带构建工具,必须外接 CMake 才能识别和编译 C++ 项目。Windows 用户最容易卡在这一步,因为下载的 CLion 安装包默认不附带 CMake,而 macOS 和 Linux 用户常误以为系统自带的 /usr/bin/cmake 可用——其实它往往太旧或没权限写缓存。
- Windows:去 cmake.org/download/ 下载最新
cmake-x.x.x-win64.msi,安装时勾选「Add CMake to the system PATH」 - macOS:别用
brew install cmake后就完事——检查是否真被 CLion 读到:which cmake输出应为/opt/homebrew/bin/cmake(Apple Silicon)或/usr/local/bin/cmake(Intel),否则在 CLion 的Settings > Build > CMake里手动填路径 - Linux:Ubuntu/Debian 用户注意,
apt install cmake装的是 3.10+ 版本,但 CLion 2023.3+ 推荐 ≥3.20,建议用sudo snap install cmake --classic或从官网下二进制包
新建项目后 CMakeLists.txt 报红、add_executable 不识别
CLion 不是“打开文件夹就自动干活”的编辑器,它靠 CMakeLists.txt 的内容决定哪些源码参与构建、链接什么库。报红通常不是语法错,而是 CLion 没触发 CMake 配置流程,或 CMakeLists.txt 缺关键声明。
- 确保根目录下有
CMakeLists.txt,且第一行是cmake_minimum_required(VERSION 3.20)(版本太低会跳过某些特性) -
project(MyApp)必须在cmake_minimum_required之后、任何add_*之前;漏写会导致add_executable报 “unknown command” - 如果用了
find_package(OpenCV REQUIRED)却报找不到,先确认 OpenCV 是通过brew install opencv(macOS)或sudo apt install libopencv-dev(Ubuntu)装的,而不是只下了源码没编译
运行按钮灰色、Run Configuration 里没有可选目标
CLion 的运行配置依赖 CMake 构建结果生成的可执行文件路径。灰色 = 它压根没找到输出目标,常见于 CMake 缓存未刷新、构建类型不匹配或源码没被 add_executable 显式包含。
- 点右上角
Build > Reload CMake Project(或按Ctrl+Shift+O),强制重读CMakeLists.txt并重建缓存 - 检查
CMake设置里的Build type:默认是Debug,但如果你在CMakeLists.txt里写了set(CMAKE_BUILD_TYPE Release),两者冲突会导致目标不生成 - 确认
add_executable(myapp main.cpp)中的main.cpp文件真实存在且在项目根目录或子目录中——CLion 不会递归扫描所有.cpp,只认你列进参数的那些
中文路径或文件名导致编译失败、fatal error: No such file or directory
CLion 底层调用的是系统级 CMake 和编译器(如 clang++ 或 g++),它们对 UTF-8 路径的支持取决于操作系统和工具链版本。Windows 上尤其敏感,因为传统 MSVC 工具链默认用 GBK 编码解析路径。
立即学习“C++免费学习笔记(深入)”;
- 最稳解法:把整个项目移到纯英文路径下,例如
D:/dev/my_cpp_app,彻底避开编码争议 - macOS/Linux 用户若坚持用中文路径,需在终端启动 CLion:
env LANG=en_US.UTF-8 /Applications/CLion.app/Contents/bin/clion.sh,否则 CMake 可能把路径当乱码传给编译器 - 别指望改 CLion 的
Help > Edit Custom Properties加file.encoding=UTF-8解决——那是 IDE 自身界面编码,不影响底层构建链路
路径和编码问题往往藏得深,等报出 No such file or directory 再回头查,经常要花半小时定位是不是文件名里的“测试”两个字惹的祸。











