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

    例子:

     
  • 相关阅读:
    单调栈问题解析
    Linux进程状态切换
    Shell编程小例子
    Linux之shell编程
    树的遍历框架
    你真的会求1-100有多少个素数吗
    java实现LRU算法
    从上到下打印二叉树 III
    从上到下打印二叉树I
    模拟盘电路板调试过程中出现的问题
  • 原文地址:https://www.cnblogs.com/zhjblogs/p/16187005.html
Copyright © 2020-2023  润新知