在ROS 中 功能包 中将类的函数定义 与 声明 分开 文件写 用main.cpp 调用 如何配置 CmakeList.txt

122 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情

需要配置 CmakeList.txt

遇到问题的工程 这样搞了下

add_library(quadrotor_control_for_fengdian_class src/QuadrotorControl.cpp )
target_link_libraries(quadrotor_control_for_fengdian_class ${catkin_LIBRARIES})


add_executable(quadrotor_control src/main.cpp )  	#生成可执行文件          swivel_gimbal_controller_cmd_publisher  节点的名字
add_dependencies(quadrotor_control mastering_ros_demo_pkg_generate_messages_cpp)   #必须添加add_dependencies,否则找不到自定义的msg产生的头文件
target_link_libraries(quadrotor_control quadrotor_control_for_fengdian_class ${catkin_LIBRARIES})

理解 在这里插入图片描述 这个是添加一个 库 第一个参数 就是自定义的库的名字 第二个参数 就是生成库用的cpp , 就是 类 的定义 文件

在这里插入图片描述 新增的库名和 catkin库做 连接

在这里插入图片描述 将main 函数 生成可执行文件 ,供 rosrun 调用

在这里插入图片描述 如注释,添加依赖 在这里插入图片描述 这个也必须要加 , main 函数生成的可执行文件命和 类定义cpp生成的库 放这里

一次工程实践 相关 记录

1、类的声明和定义分开文件下, 按 之前那么处理 分布查看 只加这个 先 生成 library 在这里插入图片描述 编译成功 类的声明 和函数定义分开写的 在这里插入图片描述 生成了这个文件

继续加main.cpp的 只加这个 在这里插入图片描述 报错 很多都没定义 在这里插入图片描述 加上这个 在这里插入图片描述 这一条最后去掉了编译也成功 ,在使用自己的msg头文件时,必须添加add_dependencies,否则找不到自定义的msg产生的头文件

报错一样 再加 在这里插入图片描述 报错变了 没有了ros::init()这种未定义了 说明 必须要 加上面的 是最基本的 在这里插入图片描述 现在的错误就是没有找到类的定义的函数

把这个库加上
在这里插入图片描述 还是没找到 和之前报错一样

给上面那个 类的 定义 那个库 也加上 target_link_libraries
在这里插入图片描述 编译就通过了 target_link_libraries ()这个 功能可能是 让其它 文件可以定用这个库

那么还有个问题 ,要想用其它功能包的 类的 函数 怎么办?