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”