ROS学习之CMakeList文件格式介绍

标签: ROS
29人阅读 评论(0) 收藏 举报
分类:

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*/下:


查看评论

Struts原理与应用(三)

Chapter 5: Struts Work Flow Struts principle and practice  上图是Struts的工作流程,前边我们提到,所有的请求都提交给ActionServ...
  • icecloud
  • icecloud
  • 2003-12-07 22:38:00
  • 2120

ROS下的CMakeList.txt编写

对ROS官网中CMakeLists.txt的内容进行了简单的翻译。
  • TurboIan
  • TurboIan
  • 2017-07-06 19:50:57
  • 1359

ROS基础学习笔记——工作空间、CMakeList、package.xml

ROS基础学习与配置;ros入门
  • u014303046
  • u014303046
  • 2016-03-13 15:18:02
  • 1539

【ROS学习】(三)package.xml和CmakeList.txt文件的编写

package.xml和CmakeList.txt文件是生成程序包和节点的重要配置文件,在开始编写我们的程序之前,对这两个文件的编写需要有一定的了解。1.package.xml。 package.x...
  • wengge987
  • wengge987
  • 2016-01-31 12:51:14
  • 3729

用qt5.3.2打开ros(机器人操作系統)的界面(CmakeList.txt)

用qt5.3.2打開ros(機器人操作系統)的界面(CmakeList.txt) 將機器人操作系統的GUI用QT來實線,可以用qmake編譯,也可以用cmake編譯 一般來說,在QT調試中用qmake...
  • w383117613
  • w383117613
  • 2015-03-05 09:10:27
  • 1902

ROS之CMakeLists

文章为个人在学习ROS中遇到的问题的总结及理解,如有错误,欢迎留言指出。...
  • mko_li
  • mko_li
  • 2017-05-26 15:59:51
  • 201

ROS中的CMakeLists.txt

在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功。如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事。所以深入了解它是很右必要的。现在我们就来看看它...
  • u013243710
  • u013243710
  • 2014-06-29 16:36:25
  • 7420

用Qt打开ros的界面(CmakeList.txt)

1、建立ROS工作空间catkin_ws,如之前已建立,则跳过此步; $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_wor...
  • zhuoyueljl
  • zhuoyueljl
  • 2016-09-12 17:30:45
  • 1291

ROS编程中如何配置CMakelists.txt来调用外部的动态链接库(.so文件)

在ubuntu下对ROS进行编程很经常的会用到动态链接库的调用,而ROS中的编译系统为caikin_make,和常规的CMake略有不同,具体不同点可参考这篇博客(点击打开链接),这就需要正确配置CM...
  • Shawn_Zhangguang
  • Shawn_Zhangguang
  • 2016-12-13 14:57:55
  • 3336

CMake 基本使用方法--写CMakeList.txt,Compile ROS package

原文地址:基本使用方法--写CMakeList.txt">CMake 基本使用方法--写CMakeList.txt作者:raindy --------------------------------...
  • RedskyDeng
  • RedskyDeng
  • 2016-02-25 16:56:55
  • 3329
    个人资料
    持之以恒
    等级:
    访问量: 4793
    积分: 325
    排名: 24万+
    文章存档
    最新评论