目錄
- 一、前言
- 二、配置要求
- 安裝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少少~