关于package.xml和CMakeList.txt的解读

关于package.xml和CMakeList.txt的解读

  • 前言
  • 一、关于package.xml文件的讲解?
  • 二、关于CMakeList.txt文件的讲解
    • 1.必需的CMake版本:cmake_minimum_required()
    • 2.软件包名:project()
    • 3.查找编译依赖的其他CMake/Catkin包(声明依赖库):find_package()
    • 4.启动Python模块支持:catkin_python_package()
    • 5.消息/服务/操作(Message/Service/Action)生成器:add_message_files(),add_service_files(),add_action_files()
    • 6.调用消息/服务/操作生成:generate_messages()
    • 7.动态重新配置参数:generate_dynamic_reconfigure_options()
    • 8.指定包编译信息导出:catkin_package()
    • 9.添加要编译的库和可执行文件:add_library()/add_executable()/target_link_libraries()
    • 10.安装规则:install()
    • 11.测试编译:catkin_add_gtest()
  • 总结

前言

参考来源:
—https://mp.weixin.qq.com/s/KEI2vZvV4kcT99LYv8YyFA


一、关于package.xml文件的讲解?

package.xml是ROS功能包的“功能包清单描述”,这文件指出了当前功能包的一些信息,比如名称啊、版本啊、描述啊、作者信息等等,最重要的是声明了编译工具、编译依赖工具、编译输出依赖和运行依赖。我们通过解读这个文件可以描述功能包的属性,包括功能包的名字、版本号、作者、维护者、通行证以及所以来的功能包。
我们这里先来看一下package.xml的原始文件,这里我以一个名为learning_cplus功能包的package.xml做出介绍。



 

  
   learning_cplus
   
  
   0.0.0
   
  
  The learning_cplus package
  
  
  waveshare
  
 
  
  TODO
  
 
  
  
 
  Jane Doe
  
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  catkin
  
  
  roscpp
  
  rospy
  
  std_msgs
  
  
  roscpp
  
  rospy
  
  std_msgs
  
  
  roscpp
  
  rospy
  
  std_msgs
  
 
 
  
  
    
    
  

二、关于CMakeList.txt文件的讲解

CMakeList.txt文件是CMake编译系统编译软件包过程的输入文件。任何CMake兼容包都包含一个或多个CMakeLists.txt文件,这些文件描述了如何编译代码以及将其安装到哪里。将CMakeLists.txt文件应用于一个catkin项目时,它就作为一个标准的附带一些限制条件的vanilla CMakeLists.txt文件。使用CMake编译程序时,cmake指令依据CMakeLists.txt 文件生成makefiles文件,make命令再依据makefiles文件编译链接生成可执行文件。
catkin是ROS官方的一个编译构建系统,是原本的ROS的编译构建系统rosbuild的发展。catkin_make是将cmake与make的编译方式做了一个封装的指令工具,规范了工作路径与生成文件路径。
CMakeList.txt的一个总体结构和顺序如下。

1.必需的CMake版本:cmake_minimum_required()

代码如下(示例):

cmake_minimum_required(VERSION 3.0.2)

2.软件包名:project()

代码如下(示例):

project(learning_cplus)

3.查找编译依赖的其他CMake/Catkin包(声明依赖库):find_package()

代码如下(示例):

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)
 
## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)

4.启动Python模块支持:catkin_python_package()

代码如下(示例):

## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()

你可能感兴趣的:(ros,编辑器,ubuntu)