目标:使用rosdep来管理外部的依赖
什么是rosdep?
rosdep是ROS的依赖管理实用程序,可以与ROS包和外部库一起使用。rosdep是一个命令行实用程序,用于识别和安装依赖项以构建或安装包。在以下情况下可以调用或被调用:
1)构建一个工作区,并需要适当的依赖项来构建内的包。
2)安装软件包(例如sudo ros-rolling-demo-nodes-cpp
)以检查执行所需的依赖关系
它能够在单个包或包目录(例如工作空间)上工作。
有关package.xml文件
一个包的package.xml文件包含了一些依赖集。该文件中的依赖项通常被称为“rosdep keys”。这些在标签<depend>、<test_depend>、<exec_depend>和<build_export_depend>中表示。他们指定了在什么情况下需要依赖项。
对于仅用于测试代码的依赖项(例如gtest),请使用test_depend。
对于仅用于构建代码的依赖项,请使用build_depend。
对于代码导出的headers所需的依赖项,请使用build_export_depend。
对于仅在运行代码时使用的依赖项,请使用exec_depend。
对于混合用途,请使用dependent,它涵盖了构建、导出和执行时间依赖关系。
这些依赖项由包的创建者手动填充在package.xml文件中,并且应该是所需的任何非内置库和包的详尽列表。
rosdep怎样工作?
rosdep将检查其路径中的package.xml文件或特定包,并查找存储在其中的rosdep keys。然后将这些密钥与中心索引进行交叉引用,以在各种包管理器中找到适当的ROS包或软件库。最后,一旦找到包,它们就安装好了,可以使用了!中心索引被称为rosdistro,可以在这里找到。我们将在下一节中对此进行更多探讨。
我怎样知道什么key应该放到我的package下面
对于ROS包(例如nav2_bt_navigator),您可以简单地放置包的名称。您可以在<distro>/distribution.yaml上找到rosdistro中所有已发布的ROS包的列表,用于您给定的ROS分布。
对于非ROS包系统依赖项,我们需要找到特定库的密钥。通常,有两个感兴趣的文件:rosdep/base.yaml和rosdep/python.yaml.base.yaml通常包含apt系统依赖项。python.yaml通常包含pip-python依赖项。要找到密钥,请在此文件中搜索库,并在yaml中找到包含该密钥的名称。这是要放入package.xml文件中的密钥。
例如,假设一个包依赖于doxygen,因为它是一个关心质量文档(提示提示)的优秀软件。我们会在base.yaml搜索doxygen,然后发现:
doxygen: arch: [doxygen] debian: [doxygen] fedora: [doxygen] freebsd: [doxygen] gentoo: [app-doc/doxygen] macports: [doxygen] nixos: [doxygen] openembedded: [doxygen@meta-oe] opensuse: [doxygen] rhel: [doxygen] ubuntu: [doxygen]
这意味着我们的rosdep密钥是doxygen,它将解析为不同操作系统的包管理器中的各种名称以进行安装。
如果我的库不再rosdistro中呢?
如果你的库不在rosdistro,你可以体验开源软件开发的伟大之处:你可以自己添加它!rosdistro的拉取请求通常在一周内很好地合并。Detailed instructions may be found here for how to contribute new rosdep keys.如果由于某种原因,这些可能无法公开提供,则可以派生rosdistro并维护备用索引以供使用。
我怎样使用rosdep工具呢?
既然我们已经对rosdep、package.xml和rosdistro有了一些了解,我们就可以使用该实用工具了!首先,如果这是第一次使用rosdep,则必须通过以下方式对其进行初始化:
sudo rosdep init
rosdep update
这将初始化rosdep,更新将更新本地缓存的rosdistro索引。偶尔更新rosdep以获取最新索引是个好主意。
最后,我们可以运行rosdep-install来安装依赖项。通常,这是在一个工作区上运行的,在一个调用中有许多包来安装所有依赖项。如果在工作区的根目录src中包含源代码,则对的调用将显示如下。
rosdep install --from-paths src -y --ignore-src
--from paths src指定检查package.xml文件以解析其密钥的路径
-y表示默认对软件包管理器的所有提示为“是”,以便在没有提示的情况下进行安装
--ignore-src意味着忽略安装依赖项,即使存在rosdep键,如果包本身也在工作区中。
还有其他可用的参数和选项。使用rosdep-h查看它们。
标签:xml,依赖,package,doxygen,Intermediate,rosdep,rosdistro From: https://www.cnblogs.com/gary-guo/p/17456169.html