在ROS的同一文件夹中编译多个包

Posted

技术标签:

【中文标题】在ROS的同一文件夹中编译多个包【英文标题】:Compiling multiple packages in same folder in ROS 【发布时间】:2018-12-13 00:30:51 【问题描述】:

我有 4 个单独的包:

    https://github.com/catkin/catkin_simple https://github.com/ethz-asl/glog_catkin https://github.com/ethz-asl/asctec_mav_framework https://github.com/ethz-asl/ethzasl_msf

我将它们保存在主文件夹中并尝试使用 catkin_make 编译它们并得到以下 cmake 错误: devel/share/glog_catkin/cmake/glog_catkinConfig.cmake:148 处的 CMake 错误(消息):

  Project 'msf_core' tried to find library 'glog'.  The library is neither a
  target nor built/installed properly.  Did you compile project
  'glog_catkin'? Did you find_package() it before the subdirectory containing
  its code is included?
Call Stack (most recent call first):
  /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:76 (find_package)
  ethzasl_msf/msf_core/CMakeLists.txt:17 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/yukti/Desktop/MSF_PACKAGE/build/CMakeFiles/CMakeOutput.log".
See also "/home/yukti/Desktop/MSF_PACKAGE/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

所以我尝试单独编译它们。在编译其中一个并尝试编译其他之后,我收到以下错误:

CMake Error: The source "/home/yukti/Desktop/MSF_PACKAGE/asctec_mav_framework-master/CMakeLists.txt" does not match the source "/home/yukti/Desktop/MSF_PACKAGE/catkin_simple-master/CMakeLists.txt" used to generate cache.  Re-run cmake with a different source directory.
Invoking "cmake" failed

我尝试的另一件事是创建多个文件夹,分别存储每个包并编译它们。我还是没能成功。

我无法确定是否需要创建多个 catkin 工作区或尝试叠加它们,或者是否有更简单的解决方案。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

在一个工作空间内放置多个包是可能的,这是 ROS 中的一种基本方法。

错误

项目“msf_core”试图找到库“glog”。

表示编译需要 glog 库但缺失。查看How to install and use GLog 并安装 glog 之类的

sudo apt install libgoogle-glog-dev

安装库后编译应该是可以的。

【讨论】:

以上是关于在ROS的同一文件夹中编译多个包的主要内容,如果未能解决你的问题,请参考以下文章

一个ros包依赖另一个ros包提供的库

ROS: catkin和rosmake创建和编译功能包执行节点

使用shell脚本调用多个ROS启动文件

ROS学习之消息包

创建一个ros功能包

ros创建功能包和编译过程问题处理