【问题标题】:IDE open project based on catkin_tools基于catkin_tools的IDE打开项目
【发布时间】:2018-05-27 00:26:20
【问题描述】:
【问题讨论】:
标签:
cmake
ide
qt-creator
catkin
【解决方案1】:
注意:以下解决方案适用于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
catkin_tools 工作区 (catkin build) 的 CLion 配置
请原谅我挖掘了一个老问题,但我刚刚遇到了这个问题,并为 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 options”下,如上所述指定devel前缀,在“Build directory”下,如上所述指定构建目录:
说明:
当以上述方式配置时,生成的 CMake 文件和 catkin build 创建的构建文件被 CLion 重用。
默认情况下,当不将其配置为重用构建文件时,CLion 将创建自己的cmake-build-debug/ 生成目录。我在使用这个专用的生成/构建目录时遇到了以下问题:
未配置 CLion 时的问题如上述步骤所述:
- 节点/库被构建了两次(CLion,
catkin build),这增加了开发时间。
- 库构建了两次,但 CLion 构建链接与
~/catkin_ws/devel .so-files 而不是 cmake-build-debug/ .so-files。这在处理包含至少一个库的 ROS 包时会令人困惑,因为在 CLion 中构建库是一条死胡同,并且永远不会使用 .so 输出。
- 由于可执行文件被构建了两次,
rosrun 存在歧义问题,因为它为指定节点找到了两个可执行文件。每次使用 rosrun 时都会出现一个可执行选择提示。