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() | #安装至本机 |
例子: