CMakeList.txt(构建配置文件)

CMakeList.txt原本是Cmake编译系统的规则文件,ROS的构建系统catkin基本上使用CMake,只是针对ROS工程添加了一些宏定义。因此在写法上CMakeList.txt和Cmake基本一致。

CMakeList.txt文件规定了catkin的编译规则,直接规定这个包需要依赖那些package,要编译生成那些目标,如何编译等等流程

写法:该文件的基本语法都是按照CMake,只是在其基础上添加了一些宏

总体结构

camke_minimum_require() #CMake的版本号,指定系统中安装的CMake的最低版本,如比规定的低则必须要更新版本
例 cmake_minimum_required(VERSION2.8.3)  指定最低版本是2.8.3
project() #项目的名称,必须要使用package.xml中的<name>标记中的功能包名称
find_package() #进行构建所需的组件包,这是让用户先创建依赖包的选项

例 find_package(catkin REQUIRED COMPONENTS roscpp std_msgs) #roscpp和std_msgs被添加为依赖包

如果是使用ROS以外的功能包时有一定区别,如使用Boost时,必须先安装system功能包

find_package(Boost REQUIRED COMPONENTS sysytem)

catkin_python_setup()  #catkin新加宏,打开catkin的Python Module的支持,调用Python安装过程setup.py
add_message_files() #catkin新加宏,添加自定义Message文件

  例 add_message_files(FILES Message1.msg Message2.msg)    FILES将引用当前功能包目录的msg目录中的

                *.msg文件,自动生成一个头文件(*.h)

add_service_files() 

#catkin新加宏,添加自定义Service文件

例 add_service_files(FILES service1.srv service2.srv) FILES将引用当前功能包目录的srv目录中的

*.srv文件

add_action_files()  #catkin新加宏,添加自定义Action文件
generate_message() #catkin新加宏,生成不同语言版本的mag/srv/action接口
注:一定要在catkin_package()之前
catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其它软件包调用

例 catkin_package(

INCLUDE_DIRS inlude #使用INCLUDE_DIRS后面的内部目录include的头文件

LIBRARIES package_name #使用功能包package_name的库

CATKIN_DEPENDS roscpp std_msgs #其后面指定roscpp和std_msgs依赖包

DEPENDS system_lib #描述系统依赖包的设置

)

add_library()  #生成库,声明构建之后需要创建的库
add_executable()  #生成可执行二进制文件
add_dependencies() #在构建该库和可执行文件之前,如果有需要预先生成的有依赖性的消息,则需要先执行
target_link_libraries()  #在创建特定的可执行文件之前将库和可执行文件进行链接的选项
catkin_add_gtest() #catkin新加宏,生成测试
install()   #安装至本机
   
   
   

例子:

 

 
posted @ 2022-04-24 18:10  北极星!  阅读(209)  评论(0编辑  收藏  举报