编写自己的ROS2库供自己使用
编写库函数时,没有main()函数,只有提供接口,那么如何编写CMakeLists.txt文件?
问题描述
按照一般节点来编写CMake文件,将出现以下错误:
aamir@aamir-WRTB-WXX9:~/Documents/UWB$ colcon build --packages-select kf
Starting >>> kf
--- stderr: kf
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/kalman_filter.dir/build.make:131: kalman_filter] Error 1
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/kalman_filter.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed <<< kf [4.93s, exited with code 2]
Summary: 0 packages finished [5.14s]
1 package failed: kf
1 package had stderr output: kf
原因分析:
主要是因为库函数只是接口,没有入口函数(undefined reference to `main’);所以应该按照接口方式来修改CMake文件。
解决方案:
# 添加头文件(如果有,一般都有)
include_directories(include
)
# 添加库函数路径
add_library(${PROJECT_NAME}
src/kalman_filter.cpp
)
接口(库)函数定义完毕!!!