使用Clion进行开发,比VsCode不知道高到哪里去了

1.创建WorkSpace

直接创建个工作空间,之前的文章有现成的Shell脚本可以使用

创建完成后在src文件夹下创建一个示例功能包

ros2 pkg create --build-type ament_cmake cpp_demo --dependencies rclcpp --node-name cpp01_demo

此时,我们有以下文件夹结构:

|_dev_ws
   |_src
      |_cpp01_demo
         |_include
         |_src
              cpp01_demo.cpp
           CMakeLists.txt
           package.xml

2. 编译

在工作空间路径下编译,使用如下的命令

colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja --no-warn-unused-cli

生成完成后,请确保 dev_ws\build 包含compile_commands.json文件。

3.打开Clion

在 CLion 中,调用 文件|打开,然后在build目录中选择compile_commands.json文件,作为项目打开,信任所有文件夹,项目成功加载后如下所示:

默认情况下,CLions 将包含 compile_commands.json 文件的目录视为项目根目录。在我们的例子中,它是build目录。在“项目”树中,实际的源文件被标记为外部源文件。为了获得正确的项目结构,我们需要将项目根目录设置为实际的工作空间目录。在工具 |编译数据库 |更改项目根 并选择工作区目录(在本例中为 dev_ws)。

4. 构建FuncPackage

为了在 CLion 中构建并启动一个包,我们将为 colcon 构建期间实际执行的 CMake 命令创建一个自定义构建目标,然后为该目标创建自定义应用程序配置

在log/Latest_build/cpp_demo文件夹下找到command.log里面的命令

Invoking command in '/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo': CONDA_PROMPT_MODIFIER=(base) /usr/bin/cmake /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/cpp_demo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja --no-warn-unused-cli -DCMAKE_INSTALL_PREFIX=/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/install/cpp_demo
Invoked command in '/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo' returned '0': CONDA_PROMPT_MODIFIER=(base) /usr/bin/cmake /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/cpp_demo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja --no-warn-unused-cli -DCMAKE_INSTALL_PREFIX=/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/install/cpp_demo
Invoking command in '/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo': CONDA_PROMPT_MODIFIER=(base) /usr/bin/cmake --build /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo -- -j16 -l16
Invoked command in '/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo' returned '0': CONDA_PROMPT_MODIFIER=(base) /usr/bin/cmake --build /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo -- -j16 -l16
Invoking command in '/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo': CONDA_PROMPT_MODIFIER=(base) /usr/bin/cmake --install /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo
Invoked command in '/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo' returned '0': CONDA_PROMPT_MODIFIER=(base) /usr/bin/cmake --install /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo

在src/cpp_demo/文件夹下创建一个Cmake_commands.sh

把上面的内容成下面这个样子


/usr/bin/cmake /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/cpp_demo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja --no-warn-unused-cli -DCMAKE_INSTALL_PREFIX=/home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/install/cpp_demo

/usr/bin/cmake --build /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo -- -j16 -l16

/usr/bin/cmake --install /home/lxj/Desktop/ROS2/myclass/ClionTest/dev_ws/src/build/cpp_demo

在Clion中创建自定义构建目标

  1. 打开Settings->Build, Execution, Deployment->Custom Build Targets 点击+去添加一个新目标

按我下面的方式填写

配置构建目标

这样就完成了在Clion环境下进行Ros2 FuncPackage的开发环境配置