catkin package相关

1. 创建catkin_package

catkin_create_pkg pkg_name depend_1 depend_2

会自动创建一个名为pkg_name的包,依赖depend_1和depend_2包

2. 添加依赖的包

在CMakeLists中添加代码

set(PACKAGE_DEPENDENCIES
  depend_1
  depend_2
  depend_new
)
find_package(catkin REQUIRED COMPONENTS ${PACKAGE_DEPENDENCIES})
catkin_package( CATKIN_DEPENDS ${PACKAGE_DEPENDENCIES})

  

depend_new为新加的依赖包

在package.xml中添加代码

<build_depend>depend_new</build_depend>
<exec_depend>depend_new</exec_depend>

3. C++代码include相关

如果要包含的代码在头文件内则在CMakeLists中添加

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)
add_executable(runB src/B.cpp)
target_link_libraries(runB ${catkin_LIBRARIES})

 

并且将要包含的头文件放到include文件夹或者子文件夹内(当然,名字可以不叫include,根据爱好随便起)

如果A.h中的实现在A.cpp中,则需要target link,在CMakeLists中添加

add_executable(runB src/B.cpp src/A.cpp)

或者也可以写成一个library

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)
add_library(
  A_lib
  src/A.cpp
)
add_executable(runB src/B.cpp)
target_link_libraries(runB A_lib ${catkin_LIBRARIES})

4.一些坑

(1)在某个.h中声明构造函数时,很容易一不注意没有区分分号和{},在调用这个函数时会报错 "未定义的引用" / “undefined reference to”

 

posted @ 2018-01-26 15:19  naiij  阅读(310)  评论(0编辑  收藏  举报