注意:以下解决方案适用于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
使用时都会出现一个可执行的选择提示。