在 ros 功能包中要使用第三方的动态库,将其放在系统默认库路径和使用绝对路径均不可取,这样的话可移植性较差,将该功能包移到其它电脑时要重新配置依赖库的路径,太麻烦了。

于是找到下面这个方法,解决了ROS功能包中添加库路径的问题。

:此法针对 ros catkin编译。

解决方法:

  将动态库放到功能包中,在CMakeLists.txt 中添加该库的相对路径。方法如下:

target_link_libraries( test ${catkin_LIBRARIES} ${PROJECT_SOURCE_DIR}/lib/libdemo.so)

其中:${PROJECT_SOURCE_DIR}为当前功能包的路径。

例子:

   功能包 test 下的 lib 目录 下的 libdemo.so 库,添加其路径的方法如下:

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.)
project(test) find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
) # add the third-party libraries, for example lib/libdemo.so
link_directories(
${catkin_LIB_DIRS} lib) include_directories(
${catkin_INCLUDE_DIRS} include ) add_executable(
test src/test.cpp) target_link_libraries( test ${catkin_LIBRARIES} ${PROJECT_SOURCE_DIR}/lib/libdemo.so)

参考:http://wiki.ros.org/catkin/CMakeLists.txt

下面的方法没用:

link_directories(
${catkin_LIB_DIRS} lib)

link_directories() 用于添加第三方库路径,

  其中 ,catkin_LIB_DIRS 表示创建的环境变量(必须要有,可以是任意名称,但建议此名方便理解),${catkin_LIB_DIRS} 为取该环境变量的值,

      lib 是相对于当前功能包所在路径的相对路径,此法默认以 当前功能包路径为基准添加额外的库路径。

在ros功能包CMakeLists.txt中获取所在功能包的路径 便于添加第三方库的相对路径的更多相关文章

  1. VS中添加第三方库及相对路径设置

    原文 VS中添加第三方库及相对路径设置 对于一些第三方的SDK,一般会包含头文件(*.h),静态库文件(*.lib)和动态库文件(*.dll). 1.  文件位置:为了提高程序的可移植性,将第三库放在 ...

  2. Android中获取应用程序(包)的大小-----PackageManager的使用(二)

    通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...

  3. cmakelists.txt中配置openg环境出现: undefined reference to symbol 'glLightfv'

    cmakelists.txt中配置openg环境出现: undefined reference to symbol 'glLightfv' 解决方法: 在cmakelists.txt添加 find_p ...

  4. Cmakelists.txt中配置glew

    在cmakelists.txt中添加: add_library(glew_static STATIC IMPORTED) set_target_properties(glew_static PROPE ...

  5. 在 Target 中获取项目引用的所有依赖(dll/NuGet/Project)的路径

    原文:在 Target 中获取项目引用的所有依赖(dll/NuGet/Project)的路径 在项目编译成 dll 之前,如何分析项目的所有依赖呢?可以在在项目的 Target 中去收集项目的依赖. ...

  6. 代码补全——Vim/Neovim中YouCompleteMe添加第三方库的支持

    参考链接: https://github.com/ycm-core/YouCompleteMe#c-family-semantic-completion https://cloud.tencent.c ...

  7. ROS当中添加第三方库

      下文以serial 库为依据讲解第三方库在ROS下面的配置. 参考文献:http://blog.csdn.net/u011853479/article/details/51263590 ros中使 ...

  8. iOS——Xcode中添加第三方库

    一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...

  9. opencv3在CMakeLists.txt中的调用问题

    在cmake工程中使用opencv需要在CMakeLists.txt文件中加以调用,在opencv2.xx版本,可以用以下语句 # 寻找OpenCV库 find_package( OpenCV REQ ...

随机推荐

  1. 图片路径转base64字节码

    package product; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...

  2. toad 快捷键大全

    现在在企业中,操作oracle数据库的客户端,除了PL/SQL外,使用的较多的就是TOAD了!toad记得F9执行全部sql和Ctrl + Enter执行选中sql就行了,有啥需要的再查吧.快捷设置在 ...

  3. Sparksql的内置函数的使用以及案例

    开发环境:spark:2.2.0 工具:IDEA OS:Windows 数据文件: 001E8CB5AB11,ASUSTek,2018-07-12 14:00:57,2018-07-12 14:00: ...

  4. p1459 Sorting a Three-Valued Sequence

    如果将1和3都放到正确的位置,2自然也在正确的位置.那么统计1,2,3的数量num1,num2,num3.再看前num1个数有几个(设x个)不是1,那么x个1肯定要移.设前num1个数有y个3,最后n ...

  5. DPDK 16.04/16.11.2 默认tx offload是关闭的引起tx vlan offload无效

    打开IXGBE调试日志发发现:tx使用ixgbe_xmit_pkts_vec,默认tx offload无效了PMD: ixgbe_set_tx_function(): Using simple tx ...

  6. kibana的 timelion工具

    时序控件(Timelion)是一款时间序列数据可视化工具,它可以将多种独立的数据源合并呈现到一张视图上. .es函数 index 指明索引    .es(index=nginx-access-log- ...

  7. 在线linux 平台

    1.http://www.shiyanlou.com/[实验楼] 2.http://bellard.org/jslinux/[大牛平台]

  8. 函数使用五:MIR7 发票预制 BAPI_INCOMINGINVOICE_PARK

    引自:http://blog.csdn.net/champaignwolf/article/details/51422329 FUNCTION zincominginvoice_park. *&quo ...

  9. tomcat压缩版配置

    下载Jdk并安装 配置Java环境变量 因为需要用services.bat安装,services.bat中 rem Make sure prerequisite environment variabl ...

  10. Utils--前台调用后台接口工具类

    Utils--前台调用后台接口工具类 package com.taotao.manage.httpclient; import java.io.IOException; import java.net ...