ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ros学习笔记(三)

2022-03-27 01:34:14  阅读:199  来源: 互联网

标签:可执行文件 src head ros 头文件 笔记 学习 include hello


1.自定义头文件调用

需求:设计头文件,可执行文件本身作为源文件。

流程:

  1. 编写头文件;

  2. 编写可执行文件(同时也是源文件);

  3. 编辑配置文件并执行。

1.1 头文件

在功能包下的 include/功能包名 目录下新建头文件: hello.h,示例内容如下:

#ifndef _HelLO_H
#define _HELLO_H

namespace hello_ns
{
class Hello
{
public:
    void run();
};
}

#endif

注意:

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

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

1.2 源文件编写

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

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

1.3.配置文件

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

 

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 自定义源文件调用

需求:设计头文件与源文件,在可执行文件中包含头文件。

流程:

  1. 编写头文件;

  2. 编写源文件;

  3. 编写可执行文件;

  4. 编辑配置文件并执行。

2.1 头文件

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

#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 ...");
}

}

2.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;
}

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中要同时包含和头文件相关的可执行文件与主函数的可执行文件

标签:可执行文件,src,head,ros,头文件,笔记,学习,include,hello
来源: https://www.cnblogs.com/Liu-Z/p/16061709.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有