ROS中catkin_make install的用法

首先catkin_make install 的作用是:创建一个可以运行,但不含源码的工程包,以便于给客户等其他人使用,但同时不至于泄露源码的这么一个作用。参考这篇。

同时提一嘴,个人感觉,catkin_make install 和 cmake install 不是一个作用。关于cmake install 在这篇博客中说到:cmake install 是将 make 生成的文件安装到系统的对应目录中,比如从github上下载下来一个依赖库的安装包,解压后经过上面几步,该依赖库的对应头文件和库文件就安装到系统中了。(如果理解有误欢迎留言指正!)

catkin_make的原理

利用cmake的编译的话,主要分两步:(预编译 编译 汇编 链接)
1.cmake指令依照你写的CMakeLists.txt生成makefiles文件
2.make指令依照makefiles编译链接生成可执行文件
其中makefiles内容大概是这样的:
在这里插入图片描述
就是相当于一个简化版的gcc编译配置文件,但是只用makefiles的话就需要处理一个很麻烦的问题:makefiles在不同平台下会有不同的格式。cmake的应用就可以解决这个问题。

catkin_make是在cmake与make基础之上再简化了一遍,相当于做了一个封装的指令工具,规范了工作路径与生成文件路径。规定的路径如下:

#基本路径
Base path: /home/user/catkin_ws
Source space: /home/user/catkin_ws/src
Build space: /home/user/catkin_ws/build
Devel space: /home/user/catkin_ws/devel
Install space: /home/user/catkin_ws/install

如果使用catkin_make的话,就只需要执行一句话就可以完成上面cmake的2条指令。

# 在一个CMake项目里
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install  # (可选)
# 在一个catkin工作空间里
$ catkin_make
$ catkin_make install  # (可选)

catkin_make install指令学习记录

这里的学习主要参考这篇博客(找遍了很多地方,能和我需要的相关的就只找到这一篇)
主要内容是,需要编辑CMakeLists.txt文件,让catkin_make指令能找到你对需要创建的install包的要求。

#############
## Install ##
#############

# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html

## Mark executable scripts (Python etc.) for installation
## 添加python程序.in contrast to setup.py, you can choose the destination
 install(PROGRAMS
   scripts/talker.py
   scripts/listener.py
   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 )

## 添加可执行文件或者库文件,Mark executables and/or libraries for installation
 install(TARGETS talker_node listener_node
   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 )

## 添加头文件.Mark cpp header files for installation
 install(DIRECTORY include/${PROJECT_NAME}/
   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
   FILES_MATCHING PATTERN "*.h"
   PATTERN ".svn" EXCLUDE
 )
## 添加资源文件的目录,例如文件夹:urdf mesh rviz,其下的所有子目录的文件也会安装到相应的目录下.
 install(DIRECTORY model
            DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
    )
 install(DIRECTORY urdf
            DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
    )
 install(DIRECTORY mesh
            DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
    )
 install(DIRECTORY rviz
            DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
    )
    
## 添加资源文件.Mark other files for installation (e.g. launch and bag files, etc.)
 install(FILES
   launch/bringup.launch
   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch
 )

或者也可以把launch文件全部打包到launch文件夹中,利用

 install(DIRECTORY model
            DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
    )

来完成添加。
在每个package里把CMakeLists.txt修改完之后,执行catkin_make install指令,就会在文件夹里生成一个install文件夹:
在这里插入图片描述

在这里插入图片描述
然后把install文件夹分享给其他人就可以咯!

可以直接把在单独的install里source,并运行节点。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐