ros学习笔记(三)
1.自定义头文件调用
流程:
-
编写头文件;
-
编写可执行文件(同时也是源文件);
-
1.1 头文件
在功能包下的 include/功能包名 目录下新建头文件: hello.h,示例内容如下:
#ifndef _HelLO_H #define _HELLO_H namespace hello_ns { class Hello { public: void run(); }; } #endif
"/home/用户/工作空间/src/功能包/include/**"
1.2 源文件编写
在 src 目录下新建文件:hello.cpp,示例内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include "ros/ros.h" #include "功能包名/hello.h" namespace hello_ns { void Hello::run() { ROS_INFO( "hello" ); } } int main( int argc, char *argv[]) { ros::init(argc,argv, "hello" ); hello_ns::Hello hello; hello.run(); return 0; } |
include_directories(
include
${catkin_INCLUDE_DIRS}
)
配置可执行文件
add_executable(hello src/hello.cpp)
add_dependencies(hello ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(hello
${catkin_LIBRARIES}
)
然后编译执行即可;
2
流程:
-
编写头文件;
-
编写源文件;
-
编写可执行文件;
-
#ifndef _HAHA_H #define _HAHA_H namespace hello_ns { class My { public: void run(); }; }
同样的配置 .vscode 下 c_cpp_properties.json 的 includepath属性
2.2 源文件
在 src 目录下新建文件:haha.cpp,示例内容如下:
#include "功能包名/haha.h" #include "ros/ros.h" namespace hello_ns{ void My::run(){ ROS_INFO("hello,head and src ..."); } }
#include "ros/ros.h" #include "test_head_src/haha.h" int main(int argc, char *argv[]) { ros::init(argc,argv,"hahah"); hello_ns::My my; my.run(); return 0; }
2.4 配置文件
头文件与源文件相关配置:
include_directories( include ${catkin_INCLUDE_DIRS} ) ## 声明C++库 add_library(head include/test_head_src/haha.h src/haha.cpp ) add_dependencies(head ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) target_link_libraries(head ${catkin_LIBRARIES} )
可执行文件配置:
add_executable(use_head src/use_head.cpp)
add_dependencies(use_head ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
#此处需要添加之前设置的 head 库
target_link_libraries(use_head
head
${catkin_LIBRARIES}
)
注意:配置可执行文件时,target_link_libraries中要同时包含和头文件相关的可执行文件与主函数的可执行文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)