Hello,欢迎来到我的博客
我们在ROS工作空间下编程时,可能会出现这一种情况:
我们在一个package下写了一个库,而在另一个package要引用这个库
这个时候该怎么处理呢?这篇文章就会告诉你。
ROS工作空间编译库文件的方法
这个相信大家都不陌生,只要在CMakeLists.txt文件中,加入如下命令即可:
add_library(${library_name} ${library_source_file})
target_link_libraries(${library_name} ****)
然后,在工作空间目录下,利用
catkin_make
即可完成编译
这个时候,我们去devel/lib文件夹下就能找到我们编译的库文件了,比如我们的library_name是hello的话,那么现在在devel/lib文件夹下就会有一个libhello.so的库文件了。
这个时候我们可以在其他package的CMakeLists.txt的target_link_libraries里面链接上hello了,但这个时候还有一个问题,hello这个库的头文件还没有被复制到devel/include的文件夹下面来,因此,我们还是无法在另一个库中include hello的头文件。
复制库头文件到devel文件夹下的方法
这个利用cmake的install功能就可以实现了,我们在CMakeLists.txt的最后添加如下语句:
install(FILES
${header_file}
DESTINATION ${CATKIN_DEVEL_PREFIX}/include
)
这里,install的意思就是把header_file安装到${CATKIN_DEVEL_PREFIX}/include文件夹下。其中,CATKIN_DEVEL_PREFIX就是表示devel文件夹的变量。
另外,直接安装文件夹也是可以的:
install(DIRECTORY
${header_directory}
DESTINATION ${CATKIN_DEVEL_PREFIX}/include
)
然后,在编译的时候,我们需要采用如下命令:
catkin_make install
这时,头文件就被安装到devel目录下了,这个时候我们就可以在其他package中,直接引用这些头文件啦。
ROS 编译过程中的一些环境变量