使用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中创建自定义构建目标
打开
Settings->Build, Execution, Deployment->Custom Build Targets
点击+去添加一个新目标
按我下面的方式填写
配置构建目标
这样就完成了在Clion环境下进行Ros2 FuncPackage的开发环境配置
评论区