ROS 工作空间下编译库文件,安装库头文件到devel文件夹

  • Post author:
  • Post category:其他


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 编译过程中的一些环境变量


ROS编译环境变量



版权声明:本文为handsome_for_kill原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。