CLion的运行/调试配置分临时和永久两类:图标半透明为临时配置(最多存5个,关闭即丢),不透明为永久配置(保存在.idea/runConfigurations/下,可Git共享);临时配置需手动点击⋯→“Save Configuration”转为永久,否则参数重启后丢失。

CLion 的运行/调试配置不是“全局设置”,而是按项目/目标独立管理的;直接改配置前,先确认你面对的是临时配置还是永久配置——临时配置关掉就丢,永久配置才值得细调。
怎么区分临时 vs 永久配置
看右上角的运行/调试配置下拉框:图标半透明的是临时配置(比如你点一下测试函数旁的 ▶ 图标生成的那个),不透明的是永久配置。临时配置最多存 5 个,旧的会被自动踢掉;永久配置会写进 .idea/runConfigurations/ 目录下,能被 Git 跟踪。
常见错误现象:刚配好的参数,下次打开 CLion 就没了 → 八成是没保存为永久配置。
- 临时配置转永久:在下拉框里选中它 → 点击右侧的
⋯→ 选Save Configuration - 永久配置改名/删掉重来更安全,别试图在临时配置上反复修
- 如果项目里已有
.idea/runConfigurations/下的 XML 文件,说明团队已共享配置,优先复用而非新建
修改 CMake 应用程序的可执行路径和参数
CMake 项目默认生成的配置,Executable 字段常填的是构建产物路径(如 cmake-build-debug/ArgsDemo),但有时你需要指向安装目录下的二进制,或加 source 环境脚本再跑。
典型问题:Could not load library dlopen error → ROS2 或自定义 install space 场景下,缺少 source install/local_setup.sh 导致动态库找不到。
- 把
Executable改成/bin/bash - 在
Program arguments里填两行:install/local_setup.sh(注意路径要对)然后换行再填原可执行文件相对路径,例如lib/my_package/my_node - 勾选
Include parent environment variables,避免环境变量被清空 - 别动
Working directory—— 默认用$ProjectFileDir$就行,改了容易让相对路径失效
跳过构建、只运行或调试已存在二进制
有些场景(比如调试嵌入式固件、远程二进制、或快速验证 patch 后行为),你根本不想触发 CMake 构建,只想拿现成的 ELF 或可执行文件跑起来。
关键操作在 Before launch 区域:
- 点右边
−把默认的Build条目删掉 - 如果需要预处理(比如 push 到板子),可加
Run External Tool,但别依赖它传参给主程序 - 确保
Executable填的是绝对路径或基于$ProjectFileDir$的相对路径,例如$ProjectFileDir$/build/out/my_firmware.elf - 调试时若提示
No symbol table loaded,检查该二进制是否带-g编译,且 CLion 能读到它(权限、路径空格、软链接断裂都可能中断符号加载)
ROS2 / 自定义环境变量类配置的坑
CLion 启动时不会自动 source setup.bash,所以直接运行节点大概率失败,但很多人误以为是路径问题,其实根子在环境隔离。
除了前面说的 /bin/bash + source + exec 方案,还有更轻量的做法:
- 进
Settings | Build, Execution, Deployment | Console | Terminal,改Shell path为/bin/bash -i(启用交互式 shell),让终端自动加载你的.bashrc里的 ROS2 setup - 但这只影响终端,不影响运行/调试配置——所以真正要生效,还得回到配置里手动补环境变量
- 在配置的
Environment variables栏里,粘贴printenv | grep -E "(ROS|AMENT)"的输出结果(注意等号两边不能有空格),例如:ROS_DISTRO=foxy;AMENT_PREFIX_PATH=/opt/ros/foxy - 别信 “自动从终端继承” 的勾选项,它在某些 Linux 发行版(尤其是 Wayland + systemd --user 环境)下不可靠
复杂点在于:环境变量、shell 初始化、CMake 构建缓存、以及 GDB 加载符号路径,这四者一旦错位,错误信息几乎一样 —— 都表现为 “找不到符号” 或 “无法连接”。动手前先用终端手动 source + run 过一遍,确认路径和环境本身没问题,再回 CLion 对齐。


















