clion默认构建目录为项目根目录下的cmake-build-debug或cmake-build-release;修改需在settings→build→cmake中通过profile的build directory设置,支持$project_dir$/build/$configuration$等变量,改后须reload cmake project。

CLion里CMake构建目录默认在哪
CLion 默认把 CMake 构建产物(如 Makefile、中间对象文件、可执行文件)放在项目根目录下的 cmake-build-debug(Debug 模式)或 cmake-build-release(Release 模式)中。这个路径不是硬编码,而是由 CLion 的 CMake Profile 配置决定的,可以改,但不建议随意删——否则 IDE 会丢失构建状态,重新生成时可能报 CMakeCache.txt not found 或索引错乱。
怎么在CLion里修改CMake构建目录
修改方式只有且必须通过 CMake Profile 设置,不能靠手动改 CMakeLists.txt 或环境变量覆盖。操作路径:File → Settings → Build, Execution, Deployment → CMake → 点击右侧 “+” 添加或编辑现有 Profile → 在 Build directory 栏填入绝对路径或相对路径(推荐用 $PROJECT_DIR$/build 这类变量)。
-
Build directory值必须是空目录,或不存在的路径;如果填了已有内容的目录,CLion 会拒绝保存并提示“directory is not empty” - 路径中支持变量:
$PROJECT_DIR$(项目根目录)、$CONFIGURATION$(当前构建类型,如 Debug)、$Platform$(如 Linux、MinGW) - 填
$PROJECT_DIR$/build/$CONFIGURATION$是最常用也最安全的写法,能自动隔离不同构建类型的输出 - 改完后必须点右下角 “Reload cmake project”,否则配置不生效,旧构建目录仍被引用
为什么不能直接改CMakeLists.txt里的set(CMAKE_BINARY_DIR …)
CLion 完全忽略你在 CMakeLists.txt 中对 CMAKE_BINARY_DIR、CMAKE_CURRENT_BINARY_DIR 的手动赋值。这些变量由 CMake 工具链自身控制,IDE 启动 CMake 时通过 -B <path></path> 参数强制指定构建目录,优先级远高于 CMake 脚本内设置。你写 set(CMAKE_BINARY_DIR "/tmp") 不仅无效,还可能干扰子项目的逻辑判断(比如 if(CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR) 误判)。
构建目录设错后常见现象和修复
典型错误包括:运行按钮灰掉、点击后报 No executable target found、终端里显示 Cannot find CMakeLists.txt in .../build、或者 CLion 反复提示 “CMake project needs to be reloaded”。根本原因几乎都是 Build directory 指向了一个没 CMakeLists.txt 的位置,或该路径下没被 CMake 初始化过。
- 先检查
Build directory是否拼写错误,尤其注意 Windows 下反斜杠不能直接写,要用正斜杠/或双反斜杠\ - 删掉整个构建目录(比如
rm -rf build/),再点 “Reload cmake project” 让 CLion 从头生成 - 确认
CMakeLists.txt确实在$PROJECT_DIR$下,且没有被 CLion 错标为 Excluded 目录(右键目录 → Mark Directory as → Cancel Exclusion) - 如果用了远程工具链(比如 WSL 或 SSH),
Build directory必须是远程路径,不能填本地 Windows 路径,否则 cmake 进程找不到目录











