【catkin】——将自己代码打包成catkin包

12 篇文章 1 订阅

catkin

  1. catkin 只安装一个库和撤销
    catkin config --install
    撤销
    catkin config --no-install

1. 将整个项目打包成 catkin 的包

打包成 catkin 的包主要是为了,用package.xml进行 depend 管理。(但是这种情况还是容易出现动态库先后依赖的问题,依赖的库还没有编译出来

  1. 新建一个package.xmlCMakeLists.txt

  2. package.xml的 name 和文件夹的名字, cmakelists.txt中 project_name, 动态库的名字, 这四者的名字需要一样。

  3. 在cmakelists.txt中导出<Package>Config.cmake文件,

# 1. 采用catkin的方式
find_package(catkin REQUIRED) 

# 创建ros package的.cmake + 设置 libs out 到 devel 下
catkin_package(     # 设定头文件和动态库
  INCLUDE_DIRS
    include         # 并不是一个路径,表示当前路径下的include文件夹
  LIBRARIES
    ${PROJECT_NAME} # 动态库的名字
)

# 2. 采用 catkin_simple 的方式
...

同时,catkin_package 这条命令会把编译的动态库放到devel/lib
参考的<Package>Config.cmakedevel/share/<catkin_package_name>/cmake下,比如:devel/share/segmentation_catkin/cmake

2. 测试

新建另外一个test catkin 包,注意4个名字相同,这里去掉一个动态库,那就是3个名字。

然后在package.xml中添加:

<depend>segmentation_catkin</depend>

在cmakelists.txt中可以打印一些变量

cmake_minimum_required(VERSION 3.2)
project(test_segmentation)

find_package(catkin_simple REQUIRED)
catkin_simple()

message("111111111", ${segmentation_catkin_FOUND})
message("333333333", ${eigen_catkin_FOUND})
message("444444444", ${hdmap_karto_FOUND})
message("222222222", ${catkin_LIBRARIES})
find_package(catkin_simple REQUIRED)
catkin_simple()

采用上面两句去解析package.xml

常用的调试变量:

  • <catkin_package>_FOUND: catkin_simple是否找到了某catkin包
  • catkin_LIBRARIES:如果找到了某catkin包,他的动态库会添加到这个
  • catkin_INCLUDE_DIRS:如果找到了某catkin包,他的头文件路径会添加到这个

我这里的打印信息

/home/darknet/CM/28_ros/maplab_enhanced/devel/share/segmentation_catkin/cmake
 /home/darknet/CM/28_ros/maplab_enhanced/devel/share/eigen_catkin/cmake
 /home/darknet/CM/28_ros/maplab_enhanced/devel/share/hdmap_karto/cmake
111111111,1
333333333,1
444444444,1
222222222,/home/darknet/CM/28_ros/maplab_enhanced/devel/lib/libsegmentation_catkin.so/home/darknet/CM/28_ros/maplab_enhanced/devel/lib/libeigen_catkin.so/home/darknet/CM/28_ros/maplab_enhanced/devel/lib/libhdmap_karto.so/usr/lib/x86_64-linux-gnu/libboost_thread.so-lpthread/usr/lib/x86_64-linux-gnu/libboost_chrono.so/usr/lib/x86_64-linux-gnu/libboost_system.so/usr/lib/x86_64-linux-gnu/libboost_date_time.so/usr/lib/x86_64-linux-gnu/libboost_atomic.so
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值