调用自定义源文件的时候需要配置cmakelists文件,刚学感觉还挺繁琐,用一个小案例记录一下。
1、随便写个头文件
在功能包的 include/功能包名 目录下创建一个头文件
记得在 .vscode 下 c_cpp_properties.json 的 includepath属性中把路径加进去
#ifndef _HELLO_H
#define _HELLO_Hnamespace hello_ns{class MyHello
{
public:void run();
};}#endif
2、随便写个源文件
在src目录下建一个源文件hello_src.cpp
同样的记得在c_cpp_properties.json文件中配置路径
#include "ros/ros.h"
#include "plumbing_head/hello.h"namespace hello_ns{void MyHello::run(){ROS_INFO("run函数执行");}
}
3、随便写个可执行文件
在src目录下建一个hello.cpp
这里没有include hello_src.cpp,肯定关联不到
#include "ros/ros.h"
#include "plumbing_head/hello.h"int main(int argc, char *argv[])
{/* code */setlocale(LC_ALL, "");ros::init(argc,argv,"hello_head");hello_ns::MyHello h;h.run();return 0;
}
4、配置文件
4.1 头文件和源文件配置
##1、指定头文件位置
include_directories(
include${catkin_INCLUDE_DIRS}
)##2、声明C++库
add_library(head_src ##给库起个名字include/${PROJECT_NAME}/hello.hsrc/hello_src.cpp
)##3、添加可执行文件的cmake目标依赖项
add_dependencies(head_src ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})##4、指定要链接库或可执行目标的库
target_link_libraries(head_src${catkin_LIBRARIES}
)
4.2 可执行文件配置
add_executable(hello src/hello.cpp)add_dependencies(hello ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})##需要把C++文件库加进来
target_link_libraries(hellohead_src${catkin_LIBRARIES}
)