原创博文,转载请标明出处:http://www.cnblogs.com/yongpan/p/6657400.html
在 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} lib) include_directories( ${catkin_INCLUDE_DIRS} include ) add_executable( test src/test.cpp) target_link_libraries( test ${catkin_LIBRARIES} libdemo.so)
参考:http://wiki.ros.org/catkin/CMakeLists.txt
原文:http://www.cnblogs.com/yongpan/p/6657400.html