zoukankan      html  css  js  c++  java
  • 在ros功能包CMakeLists.txt中获取所在功能包的路径 便于添加第三方库的相对路径

    在 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.3)
    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 是相对于当前功能包所在路径的相对路径,此法默认以 当前功能包路径为基准添加额外的库路径。

  • 相关阅读:
    IDEA SpringBoot项目连接数据库报Acess denied错误解决方法
    字符流中出现的第一个字符
    数组中重复的数字
    替换空格
    数组中次数超过一半的数字
    表示数值的字符串
    正则表达式匹配
    SpringMVC中的视图和视图解析器
    IntelliJ Idea取消Could not autowire. No beans of 'xxxx' type found的错误提示
    spring中注解注入 context:component-scan 的使用说明
  • 原文地址:https://www.cnblogs.com/yongpan/p/6657400.html
Copyright © 2011-2022 走看看