ROS 生成及调用静态库(cmake)

生成静态库

ROS编程中需要把一些关键的类进行封装,供其他工程调用,这里使用cmake生成静态库.a,供其他程序调用。下面提供cmakelist里面的写法:

如果封装的库里面引用类第三方库,那么需要加入

find_package(Boost REQUIRED COMPONENTS system)

find_package(PCL REQUIRED QUIET)

除了必要的指令,如find_package,大体还需要三步

1.#添加头文件的搜索路径

# 添加头文件搜索路径

同样,这里包含了第三方库:

include_directories(include #本工程
  ${catkin_INCLUDE_DIRS} #使用的第三方库
  ${Boost_INCLUDE_DIR}
  ${PCL_INCLUDE_DIR}

)

2.# 生成库

生成库主要是用到类要包含add_library指令,包含 要生成的名字 动/静态库  源文件(cxx),可以把每个类单独打包,也可以把几个类打包到同一个静态库中,下面是几个类一块打包:

add_library( com_lib(1.生成库名字) STATIC (2.静态库,动态库应该是SHARED)
                               #3.三个类a b c
                               ${PROJECT_SOURCE_DIR}/src/a/a.cc
                               ${PROJECT_SOURCE_DIR}/src/b/b.cpp                                                                   
                               ${PROJECT_SOURCE_DIR}/src/c/c.cpp   

                            
                            )

3.#添加需要的第三方库

静态库里往往需要一些第三方库,这里需要链接一下,静态库需要的第三方库

target_link_libraries( com_lib ${Boost_LIBRARIES}#静态库需要的第三方库
                                ${GFLAGS_LIBRARY}
                                ${PCL_LIBRARIES}  
                                ${THIRD_PARTY_LIBS}
                     )

执行catkin_make,ROS生成库的目录是在/devel/lib/里。

使用静态库

在这里费了一大把力气,翻阅了很多博客也没有找到答案,最后偶然了解到,静态库的位置指定使用的是link_directories(${PROJECT_SOURCE_DIR}/lib)指令,我把库放在了项目目录下的lib里面,下面是导入使用的办法:

link_directories(${PROJECT_SOURCE_DIR}/lib)#指定静态库的目录地址!!

add_executable(${PROJECT_NAME}_node #可执行文件
               ${PROJECT_NAME}_node.cpp  
               src/project.cpp)


target_link_libraries(${PROJECT_NAME}_node #将库链接到可执行文件中
                      com_lib
                     )

#依赖
add_dependencies(${PROJECT_NAME}_node ${PROJECT_NAME}_generate_messages_cpp ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值