ros功能包中添加功能包或者添加库文件时CMakeLists.txt文件的编辑


如果有功能包,使用添加功能包的方式添加,如果有库文件的代码文件,使用添加库文件的方式添加。

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)
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值