德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 CMakeLists..tt是每一个package包必备文件,定义package的编译规则,规定了当前package要依赖哪些 package,.要编译生成哪些目标,如何编译等流程。 CMakeLists.txt结构 cmake_minimum_required()#CMake的版本号 project() #项目名称 find_package() #找到编译需要的其他CMake/Catkin package catkin_python_setup() #catkin新加宏,打升catkin的Python Module的支持 add_message_files() #catkin新加宏,添加自定义Message./Service/Action文件 add_service_files() add_action_files() generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口 catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用 add_library() #生成库 add_executable() #生成可执行二进制文件 add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建 target_link_libraries() #链接 catkin_add_gtest() #catkin新加宏,生成测试 install() #安装至本机
9.2 机器人操作系统体系结构 CMakeLists.txt是每一个package包必备文件,定义package的编译规则,规定了当前package要依赖哪些 package,要编译生成哪些目标,如何编译等流程。 CMakeLists.txt结构
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 turtlesim.小海龟CMakeLists.tKt结构 cmake_minimum_required(VERSION 2.8.3) add service files(DIRECTORY srv FILES #CMake至少为2.8.3版 Kill.srv SetPen.srv project(turtlesim) Spawn.srv TeleportAbsolute.srv #项目(package)名称为turtlesim·在后续文件中可夜用变量$(PR0 JECT_NAME)来引用溪目名称turltesim TeleportRelative.srv) #自定又srV文件 find_package(catkin REQUIRED COMPONENTS geometry_msgs message_generation rosconsole ro scpp roscppserialization roslib rostime std_msgs std_srvs) generate_messages(DEPENDENCIES geometry_msgs std_msgs std_srvs) #cmake家,指定依慎的其他pacakge·实际是生成了一些环境变量,如<NAME>FOUND,<NAME>INCLUDE_DIRS #在ad0 message_files~add.serv1cef1es宏之后必题加上这语,用于生成srv msg头文件/module,生 ,<NAME>_LIBRARYIS 成的文件位于devel/include中 #此处catkin是必备依机其余的geometry_msgs,,为组件 catkin_package(CATKIN_DEPENDS geometry_msgs message_runtime std_msgs std_srvs) find_package(Qt5widgets REQUIRED) #catkin家令令,用于配置ROS的package配置文件和CMake文件 find_package(Boost REQUIRED COMPONENTS thread) #这个命令必须在add1 ibrary()戎者add_executable()之第调用·该离数有5个可选参数: #(1)INCLUDE_DIRS.号出色的include路径 include_directories(include $(catkin_INCLUDE_DIRS)$(Boost_INCLUDE_DIRS)) #(2)LIBRARIES·年出项目中的库 #措定C++的头文件路桂 #(3)CATKIN_DEPENDS·该项目依辑的其他catkin项目 #(4)DEPENDS。该项日所依接的非catkin CMake项日, link_directories(${catkin_LIBRARY_DIRS)) #(5)CFG_EXTRAS·其他配置选项 #指定链接库的路径 set(turtlesim node SRCS add_message files(DIRECTORY msg FILES src/turtlesim.cpp Color,msg Pose,msg) src/turtle.cpp #自定义msg文件 src/turtle_frame.cpp
9.2 机器人操作系统体系结构 turtlesim小海龟CMakeLists.txt结构 1 2
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 turtlesim小海龟CMakeLists..tKt结构 add_dependencies(draw_square turtlesim_gencpp) set(turtlesim_node HDRS include/turtlesim/turtle_frame.h add_executable(mimic tutorials/mimic.cpp) #定turtlesim_node_SRCS~turtlesim_node_HDRS变量 target_link_libraries(mimic ${catkin_LIBRARIES]) add_dependencies(mimic turtlesim_gencpp) qt5_wrap_cpp(turtlesim_node_MoCS $[turtlesim_node_HDRS}) #同样指定可执行目标、链接·依懒 add_executable(turtlesim_node $(turtlesim_node_SRCS)$(turtlesim_node_MOCS)) #指定可执竹文件目标turtlesim node install(TARGETS turtlesim_node turtle_teleop_key draw_square mimic target_link_libraries(turtlesim_node Qt5:widgets $(catkin_LIBRARIES}$(Boost_LIBRARIE RUNTIME DESTINATION $[CATKIN_PACKAGE_BIN_DESTINATION}) S}) #安装目标文件到本地系统 #指定纯接可执行文件 add_dependencies(turtlesim_node turtlesim_gencpp) install(DIRECTORY images add_executable(turtle_teleop_key tutorials/teleop_turtle_key.cpp) DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} target_link libraries(turtle_teleop_key $(catkin_LIBRARIES)) FILES_MATCHING PATTERN "*.png"PATTERN "*.svg") add_dependencies(turtle_teleop_key turtlesim_gencpp) add executable(draw_square tutorials/draw_square.cpp) target_link_libraries(draw_square $(catkin_LIBRARIES}${Boost_LIBRARIES}) add_dependencies(draw_square turtlesim_gencpp) add_executable(mimic tutorials/mimic.cpp) target_link_libraries(mimic ${catkin_LIBRARIES)) 3 4
9.2 机器人操作系统体系结构 turtlesim小海龟CMakeLists.txt结构 3 4
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 Package.xml是每一个packagef包必备文件,是对packagel内容的描述,包含packagef的名称、版本号、内 容描述、维护人员、软件许可、编译构建工具、编译依赖、运行依赖等信息,为用户提供快速了解一个 pacakgel的渠道。 Package..xml结构 <pacakge> 根标记文件 <name> 包名 <version> 版本号 <description> 内容描述 <maintainer> 维护者 <license> 软件许可证 <buildtool_depend> 编译构建工具,通常为catkin <build_depend> 编译依赖项,与Catkin中的 <run_depend> 运行依赖项
9.2 机器人操作系统体系结构 Package.xml是每一个package包必备文件,是对package内容的描述,包含package的名称、版本号、内 容描述、维护人员、软件许可、编译构建工具、编译依赖、运行依赖等信息,为用户提供快速了解一个 pacakge的渠道。 Package.xml结构
德仓创机器人 Dechuang Robot 9.2机器人操作系统体系结构 turtlesim软件包的Package,.xml文件 <?xml version="1.0"?> <I--build_depend标签未变--> <package format="2"> <I--在产明pacakge时指定format2,为新版格式-> <build_depend>qtbase5-dev</build_depend> <name>turtlesim</name> <version>0.8.1</version> <build_depend>message_generation</build_depend> <description> <build_depend>qt5-qmake</build_depend> turtlesim is a tool made for teaching RoS and RoS packages. </description> <l-run_depend救为exec_depend--> <aintainer email="dthomaseosrfoundation.org">Dirk Thomas</maintainer> <exec_depend>libqt5-core</exec_depend> clicense>BSD</license> <exec_depend>libqt5-gui</exec_depend> <url type="website">http://www.ros.org/wiki/turtlesim</ur1> <exec_depend>message_runtime</exec_depend> <url type="bugtracker">https://github.com/ros/ros_tutorials/issues</url> </package> <url type="repository">https://github.com/ros/ros_tutorials</ur1> cauthor>Josh Faust</author> <--偏译工具为catkin-> <buildtool_depend>catkin</buildtool_depend> <.-用depend来整合ouild_depend和run_depend-> <depend>geometry_msgs</depend> <depend>rosconsole</depend> <depend>roscpp</depend> <depend>roscpp_serialization</depend> <depend >ros1ib</depend> <depend>rostime</depend> <depend>std_msgs</depend> <depend>std_srvs</depend>
9.2 机器人操作系统体系结构 turtlesim软件包的Package.xml文件