catkin_package作用

  • 在含ROS的功能包中,我们会在cmakelist中看到catkin_package的身影,例如:
catkin_package(
  CATKIN_DEPENDS
    diagnostic_updater
    dynamic_reconfigure
    geometry_msgs
    nav_msgs
    rosbag
    roscpp
    sensor_msgs
    std_srvs
    tf2
    tf2_msgs
    tf2_ros
  INCLUDE_DIRS include
  LIBRARIES amcl_sensors amcl_map amcl_pf
)

那么就简单谈一下catkin_package到底有什么用:

首先,要明确一点哈:编译程序,分为catkin_make和make两种方式,前者是在工作空间编译,后者是在工程文件的build文件中进行编译。好,那么问题就来了。无论是在工作空间还是工程文件的build中就那些编译,都需要利用cmakelist。

比如我需要用到PCL库,我在cpp文件里面include了PCL的相关头文件,我就必须在cmakelist中链接PCL库,问题就在“如何链接opencv库”

  • 方案一:find_package(PCL REQUIRED)
  • 方案二:
catkin_package(
  DEPENDS  PCL 
  INCLUDE_DIRS include
)

由此我们可以看出,find_package和catkin_package在某些方面作用是相同的。

步入正题:

  • find_package()可以帮助我们找到头文件和库,catkin_package()同样可以,catkin_package()是catkin提供的CMake宏,用于为catkin提供构建、生成pkg-config和CMake文件所需要的信息。

一句话总结:如果想在工作空间进行catkin_make,就需要catkin_package()

至于catkin_package的深入研究,参考:
https://zhuanlan.zhihu.com/p/299148013

  • 需要注意的是:catkin_package中添加的包,必须在package.xml中指定依赖。

最简单的例子;

catkin_package中添加nav_msgs、rosbag等包,在package.xml中也要加入对应的依赖,否则就会报错;

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值