ROS使用catkin_make编译以及catkin_make install编译

编译

01.文件结构:
 source /opt/ros/melodic/setup.bash
    src:源空间
    build:编译空间
    devel:开发空间
    install:安装空间
02.编译命令
   build 和 devel 文件夹由 catkin_make 命令自动创建;
   install 文件夹由 catkin_make install 命令自动创建。
     catkin_make install 的作用是:创建一个可以运行,但不含源码的工程包,以便于给客户等其他人使用,但同时不至于泄露源码的这么一个作用
     catkin_make install 和 cmake install 不是一个作用--  
    catkin_make -DCATKIN_WHITELIST_PACKAGES="" -DCMAKE_INSTALL_PREFIX=/usr/local/test   install 
03.具体说明
src
 一个 package 下必须包含 CMakeLists.txt 和 package.xml 两个文件
      include 和 src 分别存放头文件(*.h)和源程序文件(*.c/*.cpp等);
       scripts 存放脚本文件(比如Python文件 *.py,shell文件 *.sh);
       launch 存放 launch文件(*.launch),用于批量运行多个可执行文件;
       config 存放配置文件(*.yaml等);
 build:编译空间
     存放CMake和catkin的缓存信息、配置信息和其他中间文件。缓存和中间文件
 devel:开发空间
    存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等
catkin_make install 把install文件夹分享给其他人就可以

排查错误:
  注意引用的文件不存在,也可能是文件中有个别字符不对应 alone along  l1 ll

启动

source /opt/t_ws/devel/setup.bash
nohup roslaunch t_ws_node t_ws.launch >t_ws_node.out 2>&1 &

ROS使用catkin_make编译

基础说明
 $ cd ~/catkin_ws #回到工作空间,catkin_make必须在工作空间下执行
 $ catkin_make    #开始编译
 $ source ~/catkin_ws/devel/setup.bash #刷新坏境

     --pkg PKG [PKG ...]   只对某个PKG进行make   package
	  --only-pkg-with-deps  ONLY_PKG_WITH_DEPS [ONLY_PKG_WITH_DEPS ...]
                    将指定的package列入白名单 CATKIN_WHITELIST_PACKAGES,
                    之编译白名单里的package。该环境变量存在于CMakeCache.txt

 源代码--src  -->  build --> devel	
 catkin_make之后,应该在catkin工作区的根目录中注意到两个新文件夹:build和devel文件夹。
    在build文件夹中将调用cmake和make, 缓存信息和中间文件
    在devel文件夹中将包含所有生成的文件和目标,以及setup。* sh文件,以便您可以像安装它一样使用它
	      目标文件(包括头文件,动态链接库,静态链接库,可执行文件)环境变量等
 文件系统层次结构标准(FHS)

 一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文件等等)
  CMakeLists.txt   package 的包名-依赖-源文件-目标文件等编译规则
  package.xml       -- 报名-版本号-作者-依赖信息等

功能包编译

 1. 编译工作空间下的所有功能包
    catkin_make
 
 2. 编译工作空间下特定的功能包
    catkin_make -DCATKIN_WHITELIST_PACKAGES=“package1;package2”
 
 3. 编译工作空间下特定的功能包
   catkin_make --pkg package_name
   
 4.catkin_make安装到指定目录  
      source /opt/ros/kinetic/setup.bash
      catkin_make -DCMAKE_INSTALL_PREFIX=/opt/ros/kinetic install 
	  关于 DCMAKE_INSTALL_PREFIX
 关于 DCATKIN_WHITELIST_PACKAGES 说明
   01.编译功能包
   catkin_make -DCATKIN_WHITELIST_PACKAGES="需要单独编译的包名"
   02.但是如再次使用catkin_make编译所有功能包时会出现仅仅只编译上次设置的单独功能包,如果想要再次使用catkin_make编译所有功能包,需要执行:
	catkin_make -DCATKIN_WHITELIST_PACKAGES=""
切换到所有功能包

catkin_make install 中和 CmakeList.txt 中的配置

install用于指定在安装时运行的规则。它可以用来安装很多内容,可以包括目标二进制、动态库、静态库以及文件、目录、脚本等
# 将源代码添加到此项目的可执行文件。
add_executable (Server "Server0327.cpp" "Server0327.h")
target_link_libraries

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
        DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}/..
        FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
)

install(DIRECTORY launch/
        DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch
)

install(DIRECTORY conf/
        DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/conf
)

参考

https://blog.csdn.net/zhaodeming000/article/details/119884395
 ROS简介 https://www.kancloud.cn/zhouws/robot_ustc_mooc/2153666
posted @ 2022-05-24 15:01  辰令  阅读(3999)  评论(0编辑  收藏  举报