ROS学习之CMakeList文件格式介绍

ROS中创建软件包所依赖的文件为CMakeList.txt,catkin_make会根据你写的CMakeList.txt来配置编译软件包。

CMakeList.txt文件主要包含以下内容:

所需CMake版本                cmake_minimum_required(VERSION 2.8.3)

软件包名称                        project()

查找构建此包所需的包      find_package()

消息/服务/动作生成器        add_message_files(),add_service_files(),add_action_files()

消息/服务/动作生成           generate_messages()

指定包构建的消息导出      catkin_package()

要建立的库/可执行文件     add_library()/ add_executable()/ target_link_libraries())target_link_libraryes通常情况下要有

1. 所需CMake版本

catkin_make的底层是使用cmake进行编译的,这里指定cmake的版本(最低版本)

 

2. 软件包名称

project(package_name)

在使用catkin_create_pkg创建包时,后面跟的参数(包名)就是此处的package_name

在CMakeList.txt后面的部分可以使用 ${PROJECT_NAME} 来使用此参数

3. 查找此包创建时所需要的其它包

可以将所依赖的包写成下面的形式:
find_package(catkin REQUIRED)
find_package(roscpp REQUIRED)
find_package(rospy REQUIRED)
find_package(std_msgs REQUIRED)

其中catkin是创建每个包所必须的依赖项,创建包时所依赖的其它项又可以将其组成catkin的组件,所以上面可以总写为:

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

如果要使用 C++ 和 Boost,则需要引用 find_package 包含 Boost,并且指明 Boost 的类型,如使用 Boost threads,则:

find_package(Boost REQUIRED COMPONENTS thread)

4. add_message_files()

像message service 和action的定义需要在catkin_package()之前

## Generate messages in the 'msg' folder
# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )
比如:
add_message_files(
  FILES Num1.msg Num2.msg
)

5. catkin_package()

用来向编译系统指明catkin-specific的信息,格式如下:
catkin_package(
   INCLUDE_DIRS include  # 此项打开之后该软件包的include文件可以被其它包所引用
   LIBRARIES ${PROJECT_NAME} #同理
   CATKIN_DEPENDS roscpp nodelet
   DEPENDS eigen opencv)

6. 包含文件目录

include_directories(include ${catkin_INCLUDE_DIRS})  

其中include是指包含本软件包下的头文件, ${catkin_INCLUDE_DIRS}是指ROS下其它包的头文件,include需要写在${catkin_INCLUDE_DIRS}前面。

7. 生成可执行文件

#其中talker为将要生成的二进制文件,在ros所有的包中必须是独一无二不能重复的,src/talker.cpp为需要编译的源文件
add_executable(talker src/talker.cpp)  
target_link_libraries(talker ${catkin_LIBRARIES}) 
生成的可执行文件会存放在./devel/lib/*pack_name*/下:

 

 

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMakeLists.txt是一个CMake配置文件,用于在ROS(Robot Operating System)中构建和编译软件包。CMakeLists文件位于软件包的根目录中。 CMakeLists.txt的主要作用是告诉CMake如何构建ROS软件包。它包含了一系列命令和参数,这些命令和参数定义了软件包的结构、依赖关系、编译选项、目标和链接库等信息。 一个典型的CMakeLists.txt包含以下几个主要部分: 1. cmake_minimum_required(VERSION <cmake版本>): 指定需要的CMake最低版本。 2. project(<软件包名称>): 指定ROS软件包的名称。 3. find_package(catkin REQUIRED COMPONENTS <依赖的ROS软件包>): 定义所需的ROS软件包及其版本。 4. catkin_package(): 定义ROS软件包的构建选项和依赖关系。 5. include_directories(include ${catkin_INCLUDE_DIRS}): 指定包含的头文件目录。 6. add_executable(<可执行文件名称> <源代码文件>): 添加可执行文件并指定源代码文件。 7. target_link_libraries(<可执行文件名称> ${catkin_LIBRARIES}): 指定可执行文件的链接库。 8. add_dependencies(<目标名称> <依赖的软件包>): 添加依赖关系。 CMakeLists.txt可以包含其他的自定义命令和选项,用于定制化构建过程。 通过编写和配置CMakeLists.txt文件,可以轻松地生成ROS软件包的构建系统。这个构建系统可以自动处理软件包之间的依赖关系,将源代码编译为可执行文件,并链接所需的库文件,从而完成ROS软件包的构建和编译过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值