• 08 ROS阶段总结——package.xml 和 CMakeLists.txt 详细解读


    01 ROS 基本搭建思路及流程

    建立catkin基本工作空间

    mkdir -p ~/catkin_ws/src //创建工作空间
    cd ~/catkin_ws // 进入工作空间
    catkin_make // 执行catkin的标准工作流程,即编译工作空间
    source devel/setup.bash //配置工作环境

    一次性解决方法:
    - 终端输入:gedit
    ~/.bashrc

    - 文件打开后直接翻到最后面
    - 在底部添加source ~/catkin_ws/devel/setup.bash
    - 保存退出即可

    建立程序包,在src文件夹下

    cd ~/catkin_ws/src // 进入src文件夹
    catkin_create_pkg beginner_tutorials std_msgs rospy roscpp // 创建新程序包,依赖于std_msgs、 rospy 和roscpp

    02 每个程序包内包含了package.xml 和 CMakeLists.txt 文件(位于workspace下)以及程序包文件夹,最核心的为src(非catkin_ws/src)内的.cpp或.py文件

    (a) package.xml 是什么?——软件包清单,定义有关包的属性(名称、版本号、作者、维护以及其他catkin包的依赖关系)

    结构(所有包至少有一个依赖关系,构建工具依赖于catkin)

    <package>
    
    <name> //功能包的名字
    <version> //功能包的版本
    <description> //功能包内容的描述
    <maintainer> //功能包的创建于维护者
    <license> //软件发行版通行证 (例如: GPL, BSD, ASL)
    
    </package>

    4种依赖包

    <buildtool_depend>xxxx<buildtool_depend>// 指定编译此功能包的编译系统工具
    <build_depend>xxxx<build_depend>// 指定编译此功能包需要的其他功能包,可以是功能包中的头文件、链接库、其他源文件。  
    <run_depend>xxxx<run_depend> // 指定运行此功能包代码需要的其他功能包。 
    <test_depend>xxxx<test_depend>// 指定单元测试需要的其他功能包

     举例

    <package>
      <name>foo_core</name>
      <version>1.2.4</version>
      <description>
        This package provides foo capability.
      </description>
      <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
      <license>BSD</license>
    
      <url>http://ros.org/wiki/foo_core</url>
      <author>Ivana Bildbotz</author>
    
      <buildtool_depend>catkin</buildtool_depend>
    
      <build_depend>message_generation</build_depend>
      <build_depend>roscpp</build_depend>
      <build_depend>std_msgs</build_depend>
    
      <run_depend>message_runtime</run_depend>
      <run_depend>roscpp</run_depend>
      <run_depend>rospy</run_depend>
      <run_depend>std_msgs</run_depend>
    
      <test_depend>python-mock</test_depend>
    </package>

    多个子功能包情况

     <export>
       <metapackage />//使用Metapackages
     </export>

    (b) CMakeLists.txt 文件——描述了如何构建程序以及在哪里安装程序包。

    // CMakeListx.txt文件必须准守下面的这些守则,否则的话,程序包将不能被正确的构建。在配置文件中,下面的顺序很重要。
    
    Required CMake Version (cmake_minimum_required)
    Package Name (project())
    Find other CMake/Catkin packages needed for build (find_package())
    Enable Python module support (catkin_python_setup())
    Message/Service/Action Generators (add_message_files(), add_service_files(), add_action_files())
    Invoke message/service/action generation (generate_messages())
    Specify package build info export (catkin_package())
    Libraries/Executables to build (add_library()/add_executable()/target_link_libraries())
    Tests to build (catkin_add_gtest())
    Install rules (install())

     详细内容参考:https://junjun.blog.csdn.net/article/details/82709620,感谢分享!

  • 相关阅读:
    Jenkins自动化Harbor安装与基本使用
    20212917于欣月 202120222 《网络攻防实践》第一周作业
    nfs挂载失败
    .NET CORE .NET 5 6在华为arm 鲲鹏服务器运行
    EF CORE 2.0升级到6.0 记录
    Go语言使用gorm对MySQL进行性能测试
    Go自定义DNS解析器负载均衡实践
    基于爬虫的测试自动化经验分享
    Java&Go高性能队列之channel性能测试
    Jira API的六种传参方式
  • 原文地址:https://www.cnblogs.com/Pygoupfs/p/15264677.html
Copyright © 2020-2023  润新知