注意:以下解决方案适用于catkin build,但不适用于catkin_make。如果您正在使用catkin_make,请访问:
https ://stackoverflow.com/a/35143865/2422098
https://www.jetbrains.com/help/clion/2020.2/ros-setup-tutorial.html#set-build-paths
工作区的 CLion 配置catkin_tools( catkin build)
请原谅我挖掘了一个老问题,但我刚刚遇到了这个问题并找到了 CLion 的解决方案catkin_tools(即,当使用 构建时catkin build)。我在 20.04 上使用 ROS Noetic 和 CLion 2020.2.4 测试了建议的解决方案。
根据文档,catkin_tools为每个 ROS 包使用单独的开发工作区路径:
https ://catkin-tools.readthedocs.io/en/latest/advanced/linked_develspace.html
包的 devel 前缀路径:
-DCATKIN_DEVEL_PREFIX:PATH=/home/<user-name>/catkin_ws/devel/.private/<package-name>
包的构建目录:
/home/<user-name>/catkin_ws/build/<package-name>
要在 CLion 中打开和编辑 ROS 包,请按照以下步骤操作:
catkin build在工作区中运行
- devel 文件夹中的源代码
/opt/ros/$ROS_DISTRO/setup.bash和您的工作区setup.bash
- 之后,从命令行启动CLion,让它继承环境变量
- 在 CLion 的 Open Project 向导中,导航到 ROS 包,然后选择
CMakeLists.txt. 出现提示时,单击Open as Project
- 打开设置窗口(通常是 Ctrl+Alt+S)
- 导航到“构建、执行、部署”>“CMake”
- 在“CMake 选项”下,如上所述指定 devel 前缀,在“构建目录”下,如上所述指定构建目录:

说明:
当以上述方式配置时,生成的 CMake 文件和创建的构建文件catkin build被 CLion 重用。默认情况下,当不将其配置为重用构建文件时,CLion 将创建自己的cmake-build-debug/生成目录。我在使用这个专用的生成/构建目录时遇到了以下问题:
未按照上述步骤配置 CLion 时出现的问题:
- 节点/库被构建了两次(CLion,
catkin build),这增加了开发时间。
- 库构建了两次,但 CLion 构建链接与
~/catkin_ws/devel.so 文件而不是cmake-build-debug/.so 文件。这在处理具有至少一个库的 ROS 包时会令人困惑,因为在 CLion 中构建库是一条死胡同,并且永远不会使用 .so 输出。
- 由于可执行文件被构建了两次,
rosrun因此存在歧义问题,因为它为指定节点找到了两个可执行文件。每次rosrun使用时都会出现一个可执行的选择提示。