Cmake 之 调用第三方库

1. 需要知道库二进制文件路径 以及 库头文件路径

2. findpackage 归根结底就是要找到上面的 库文件/头文件路径。而 .cmake文件正好保存了 库文件/头文件路径信息。 所以,findpackage 最终就是要寻找 .cmake文件

3. config模式  module 模式

4. include_directoy 中还需要包含 第三方库的头文件路径吗?

    target_link_libraries 中还需要指明 第三方库文件吗?

   必须要 包含啊。 因为,findpackage命令只是找到了 .cmake文件,这个文件内部 定义了 库文件路径、头文件路径(GLOG_INCLUDE_DIR,GLOG_LIBRARY )。 只是告诉你了路径,如果你想调用这个库,就必须包含相应的头文件以及库文件

    以上 参考:https://zhuanlan.zhihu.com/p/97369704?utm_source=wechat_session

catkin_INCLUDE_DIRS

catkin_LIBRARIES

表示了所有catkin组件的路径

这个写的特别好:https://blog.csdn.net/qq_42145674/article/details/106157483

关于任乾工程中的cmake 技巧,可参考:

https://blog.csdn.net/weixin_46181372/article/details/112677855

https://zhuanlan.zhihu.com/p/105512661

说明一下:

1. 其中的包含第三方库的技巧:替代了普遍的 findpackage , include_directory , target_libraty.这三步分别是怎么替代的?

   -- 首先,利用了findpackage 命令的实质,即寻找 .cmake 文件。那么好,我自己将所需库的.cmake文件集中起来,自己include 来找到,不麻烦 findpackage 了

   -- 其次,利用了 .cmake 文件的本质。这个文件保存的就是一些 符合 cmakelist.txt 规范的命令。因此在原来 .cmake 基础上, 我自己增加 两个操作: 1)include_directory 2) 将 lib 名字添加到一个统一的 变量中去。  (注意一个特性: .cmake 中的变量 可以被 cmakelist.txt 使用,同时, cmakelist.txt 中的变量 也可以被 .cmake 使用)如下:

include_directories(${GLOG_INCLUDE_DIRS})
list(APPEND ALL_TARGET_LIBRARIES ${GLOG_LIBRARIES})

catkin_package() 这个命令的作用主要是适用于什么时候呢?如果当前包会被其他包调用,则需要定义一些内容,否则没必要,滞空即可,或者不写这个函数;

 参考:catkin_package的作用

=======

这个讲的也不赖啊:https://blog.csdn.net/sukha/article/details/52460492

add_dependencies

add_subdirectory

除此之外,catkin还为ROS设计了一些独有语句

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值