机器人仿真(1)Ubuntu24.04下CLion的ROS2开发环境配置
目录
- 一、前言
- 二、配置要求
- 安装ROS2
- 安装CLion
- 三、配置步骤
- 四、后记
一、前言
近日CLion已开放非商用免费使用。相比教程中常用的VSCode,CLion在自动补全、调试和环境变量配置等方面表现更为出色。不过截至本文撰写时,CLion官网仅提供了Windows系统下的ROS2支持配置方案(ROS2 setup tutorial),需要通过--cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
选项导出编译命令,再手动加载和添加编译目标,操作较为繁琐。为此,我尝试采用顶层CMakelists方案来解决这一问题,最终成功打造了流畅的CLion+ROS2开发环境。
二、配置要求
安装ROS2
ROS2的安装已经有许多博客详细介绍,博主最常使用的安装方式是鱼香ROS一键安装,具体参考:动手学ROS2-3.动手安装ROS2
安装CLion
CLion的安装参考Jetbrains官网即可:Download CLion,官网为Ubuntu提供了命令行安装sudo snap install clion --classic
,但是博主之前snap安装的CLion有很多bug,可能是对Ubuntu 24.04支持不好,所以仍然建议下载.tar.gz然后配合alias命令使用。
我的CLion安装路径如下
~/Softwares ------------------------------------------------------- 16:15:58
> pwd
/home/star/Softwares~/Softwares ------------------------------------------------------- 16:15:59
> tree -L 3 clion
clion
└── CLion-2025.1.2└── clion-2025.1.2├── bin├── build.txt├── help├── Install-Linux-tar.txt├── jbr├── lib├── license├── modules├── plugins└── product-info.json10 directories, 3 files
在~/.zshrc
中添加如下代码
alias clion="/home/star/Softwares/clion/CLion-2025.1.2/clion-2025.1.2/bin/clion"
这样就可以通过clion .
的方式直接从命令行将一个目录打开为CLion项目了。
三、配置步骤
以博主的工作空间为例,一个ROS2的工作空间结构如下,可以发现相比于ROS1,ROS2的工作空间没有顶层的CMakeLists.txt
,因此无法像CLion配置ROS1一样通过顶层的CMakeLists.txt
管理整个工作空间。
├── build
│ ├── ament_cmake_environment_hooks
│ ├── ament_cmake_index
│ ├── ament_lint_cmake
│ ├── ament_xmllint
│ ├── CMakeFiles
│ ├── decomp_ros2_msgs
│ ├── decomp_ros2_utils
│ ├── decomp_util
│ ├── log
│ ├── poly_planner2
│ ├── quadrotor_msgs
│ └── Testing
├── install
│ ├── poly_planner2
│ └── quadrotor_msgs
├── log
│ ├── build_2025-06-30_14-37-21
│ ├── build_2025-06-30_14-37-52
│ ├── build_2025-06-30_14-43-14
│ ├── latest -> latest_build
│ └── latest_build -> build_2025-06-30_14-43-14
└── src├── DecompROS2├── poly_planner2└── quadrotor_msgs27 directories
那么我们可不可以通过手动引入CMakeLists.txt来管理整个工作空间呢?答案是肯定的,在Github上我找到了答案,可以参考:kai-waang/colcon-toplevel-cmake,具体操作如下
- 克隆上述仓库到
/opt/ros/scripts/cmake
下
sudo git clone https://github.com/kai-waang/colcon-toplevel-cmake /opt/ros/scripts/cmake
- 切换到工作空间下
cd ~/Workspaces/px4_ws # 此处替换为自己的工作空间
- 将刚才克隆的仓库的
toplevel.cmake
拷贝到工作目录顶层(和src/
同级)
cp /opt/ros/scripts/cmake/toplevel.cmake ./CMakeLists.txt
- 编译工作空间,从命令行启动CLion
colcon build # 这一步是为了生成 install/setup.zsh
clion .
- 如果是第一次用CLion打开这个工作空间,会弹出下面的窗口,点击OK即可
- 进入
Settings > Build, Execution, Deployment > ToolChains
,在Environment file中选择当前工作空间下的install/setup.zsh
- 进入
Settings > Build, Execution, Deployment > CMake
,在Build directory中输入build
- 通过修改顶层的
CMakeLists.txt
,可以控制只编译某几个包,类似于colcon build --packages-select xxx
,我的顶层的CMakeLists.txt
修改如下:
cmake_minimum_required(VERSION 3.14)
project("PROJECT_NAME")include("/opt/ros/scripts/cmake/colcon.cmake")# only for clion highlighting and analysis
colcon_add_subdirectories(BUILD_BASE "${PROJECT_SOURCE_DIR}/build"BASE_PATHS "${PROJECT_SOURCE_DIR}/src/"--packages-select decomp_ros2_msgs quadrotor_msgs
)
- Reload CMake Project,可以看到如下的输出。
同时可以在Run/Debug Configuration下可以看到这个包下面所有的build targets,接下来就可以正常编译、运行和调试了!
四、后记
使用顶层CMakeLists带来了便捷智能的开发体验,但是不能存在同名的build targets,如果需要使用--cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
,我已经在JetBrains官网反馈了Ubuntu下教程的缺失问题,虽然对于CLion熟练用户来说看着Win的教程也可以完成配置,但是还是希望他们能够尽快给出更好的解决方案。
最后祝大家编程愉快,idea多多,bug少少~