功能包中添加其他功能
如果有功能包,使用添加功能包的方式添加,如果有库文件的代码文件,使用添加库文件的方式添加。
1.功能包中添加功能包
工作任务:在package1中导入package2(package2中包含头文件headfile.h),使得package1中的main1.cpp能够引入使用headfile.h。
1.在package1中创建用于存储新功能包的文件夹,命名managepackage,该文件夹与package1的src同级。
2.在managepackage中创建CMakeLists.txt文件,编辑该文件添加代码:
add_subdirectory(package2)
3.在package1的CMakeLists.txt文件中添加代码
#add_compile_options(-std=c++11)#在该行下面添加如下代码
add_subdirectory(package2)
include_directories(package2)
4.在package1的CMakeLists.txt文件中编译节点main1(该节点使用了库文件)处添加代码
add_executable(main1_node src/main1.cpp)
target_link_libraries(main1_node
${catkin_LIBRARIES}
package2
)
5.这样,在main中即可引用package2中的头文件了:
#include"package2/headfile.h"
2.功能包中添加库文件
工作任务:让package1中的main1.cpp使用库文件(两个文件cJSON.h cJSON.c)。
1.功能包的src中包含库文件(cJSON.h cJSON.c)
2.功能包的include下创建一个文件夹(cJSON),该文件夹中包含cJSON.h 和cJSON.c,并且创建用于编译库文件的CMakeList.txt,在CMakeList.txt中写入代码(这里定义了library名称为cJSONS,后续使用时保持名称一致):
add_library(cJSONS cJSON.h cJSON.c)
target_link_libraries(cJSONS)
3.在功能包的CMakeList.txt中添加如下代码:
1文件开头处:
#add_compile_options(-std=c++11)
file(GLOB SRC_FILES src/*.cpp)
file(GLOB HEAD_FILES src/*.h)
2.编译节点处
include_directories(
include
${catkin_INCLUDE_DIRS}
)
add_subdirectory(include/cJSON) #include文件夹中的库文件夹名
add_executable(main1_node src/main1.cpp)
target_link_libraries(main1_node ${catkin_LIBRARIES})
#链接到使用该库的节点,cJOSNS为include的CMakeList.txt中add_library时定义的名称
target_link_libraries(main1_node cJOSNS)