ROS学习第十六节—— 头文件与源文件

https://download.csdn.net/download/qq_45685327/87708569

1.自定义头文件调用

新建功能包ROS学习第十六节—— 头文件与源文件_第1张图片

 在该路径下创建头文件

/home/xiaoming/demo0/src/hello_head/include/hello_head

ROS学习第十六节—— 头文件与源文件_第2张图片

编写以下代码

#ifndef _HELLO_H
#define _HELLO_H

namespace hello_ns{

class HelloPub {

public:
    void run();
};

}

#endif

在 VScode 中,为了后续包含头文件时不抛出异常,请配置 .vscode 下 c_cpp_properties.json 的 includepath属性

"/home/用户/工作空间/src/功能包/include/**"

在 src 目录下新建文件:hello.cpp,示例内容如下:

#include "ros/ros.h"
#include "test_head/hello.h"

namespace hello_ns {

void HelloPub::run(){
    ROS_INFO("自定义头文件的使用....");
}

}

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    ros::init(argc,argv,"test_head_node");
    hello_ns::HelloPub helloPub;
    helloPub.run();
    return 0;
}

ROS学习第十六节—— 头文件与源文件_第3张图片

 

配置CMakeLists.txt文件,头文件相关配置如下:

include_directories(
include
  ${catkin_INCLUDE_DIRS}
)

ROS学习第十六节—— 头文件与源文件_第4张图片

 

可执行配置文件配置方式与之前一致:

add_executable(hello src/hello.cpp)

add_dependencies(hello ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

target_link_libraries(hello
  ${catkin_LIBRARIES}
)

ROS学习第十六节—— 头文件与源文件_第5张图片

 

最后,编译并执行,控制台可以输出自定义的文本信息。

2.自定义源文件调用

1.头文件

头文件设置于 上文类似,在功能包下的 include/功能包名 目录下新建头文件: haha.h,示例内容如下:

#ifndef _HAHA_H
#define _HAHA_H

namespace hello_ns {

class My {

public:
    void run();

};

}

#endif

ROS学习第十六节—— 头文件与源文件_第6张图片

 

注意:

在 VScode 中,为了后续包含头文件时不抛出异常,请配置 .vscode 下 c_cpp_properties.json 的 includepath属性

"/home/用户/工作空间/src/功能包/include/**"

ROS学习第十六节—— 头文件与源文件_第7张图片

 

2.源文件

在 src 目录下新建文件:haha.cpp,示例内容如下:

#include "test_head_src/haha.h"
#include "ros/ros.h"

namespace hello_ns{

void My::run(){
    ROS_INFO("hello,head and src ...");
}

}

ROS学习第十六节—— 头文件与源文件_第8张图片

3.可执行文件

在 src 目录下新建文件: use_head.cpp,示例内容如下:

#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;
}

ROS学习第十六节—— 头文件与源文件_第9张图片

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}
)

ROS学习第十六节—— 头文件与源文件_第10张图片

 ROS学习第十六节—— 头文件与源文件_第11张图片

 执行观看结果

ROS学习第十六节—— 头文件与源文件_第12张图片

 

你可能感兴趣的:(ROS,学习)