cmake导入so库_ros项目 CMakeLists.txt中添加自己的库路径

在ROS功能包中,为提高可移植性,避免直接使用系统库路径或绝对路径来添加第三方动态库。通过在CMakeLists.txt中利用`link_directories`和`find_package`函数,结合catkin_LIB_DIRS环境变量,可以解决这个问题。例如,当libdemo.so位于功能包test的lib目录下时,可以如下操作:`link_directories(${catkin_LIB_DIRS} lib)`,然后在`target_link_libraries`中链接libdemo.so。
摘要由CSDN通过智能技术生成

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

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

注:此法针对 ros catkin编译。

在ROS功能包下的CMakeLists.txt 中添加 如下代码:

link_directories(

${catkin_LIB_DIRS} lib)

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

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

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

例子:

功能包 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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值