ROS学习笔记(3):添加第三方依赖库

ROS学习笔记(3):添加第三方依赖库_第1张图片

最近在工控机上加入CAN卡,想利用CAN卡来做为数据收发。现在在工程中加入CAN卡的头文件和自己做的cpp文档。已经申明了

函数,但是还是会出现上图所示的错误,经过一晚上的战斗算是搞清楚了。感谢@头发还没秃的帮助哈。

问题原因:没有添加第三方依赖库。

解决方案:

在ROS下使用第三方库的话可以直接修改pkg所对应的CMakeLists.txt。

添加头文件搜索路径: 在include_directories()添加所需要的头文件目录, 相当于编译过程中的 -I命令。
添加库文件搜索路径: 在link_directories()里添加所需要的库的目录,相当于编译过程中的 -L命令。
添加对库的链接:在target_link_libraries()里面添加需要添加的库的名称,相当于编译过程中的-l命令。

原库中的make编译文件。

CROSS_COMPILE =

.PHONY : clean

AS              = $(CROSS_COMPILE)as
LD              = $(CROSS_COMPILE)ld
CC              = $(CROSS_COMPILE)gcc
CPP             = $(CROSS_COMPILE)g++ -fPIC
AR              = $(CROSS_COMPILE)ar
NM              = $(CROSS_COMPILE)nm
STRIP           = $(CROSS_COMPILE)strip
OBJCOPY         = $(CROSS_COMPILE)objcopy
OBJDUMP         = $(CROSS_COMPILE)OBJDUMP
RANLIB			= $(CROSS_COMPILE)ranlib
CFLAGS			=  -I /usr/local/include/libCanCmd/
LDFLAGS		= -L /usr/lib/ -lCanCmd 
OBJS 			= 
all:	clean  testLikeCan
	
testLikeCan:
	$(CPP)  -g -o testLikeCan testLikeCan.c -lpthread  -lCanCmd
%.o: %.c
	$(CPP) $(CFLAGS) -g -fPIC -c  $< -o $@ 

clean :
	rm -fr *.o libCanCmd.so testLikeCan
install:
	cp dll/libCanCmd.so /usr/lib/
	ldconfig
uninstall:
	rm -f /usr/lib/libCanCmd.so

其中:CFLAGS            =  -I /usr/local/include/libCanCmd/
LDFLAGS        = -L /usr/lib/ -lCanCmd  

根据原有库的make文档写出的cmake.txt文档。

include_directories(
  include ${catkin_INCLUDE_DIRS}
  /usr/local/include/libCanCmd/
# include
# ${catkin_INCLUDE_DIRS}
)
link_directories(
  ${catkin_LIB_DIRS}
  /usr/lib/
)
add_executable(auto_run  
include/canopen/lowerpc.h
include/canopen/socketcon.h
include/canopen/scanner.h
include/canopen/type.h
include/canopen/ICANCmd.h
src/auto_run.cpp
src/socketcon.cpp 
src/scanner.cpp 
src/minipcie_can.cpp
# src/lowerpc.cpp 
)
add_dependencies(auto_run ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(auto_run
  ${catkin_LIBRARIES}
  CanCmd
)

修改完成。 经过编译后成功。

你可能感兴趣的:(ROS,技术积累,ROS,程序配置)