ROS2 CMakeLists.txt 如何使用
本文总结了ROS2项目中CMake配置的最佳实践。对于ROS2依赖(如rclcpp),推荐优先使用ament_target_dependencies进行一站式配置;非ROS2依赖(如OpenCV)需配合find_package和target_link_libraries使用;自定义头文件应通过target_include_directories添加。文章还对比了不同CMake命令的适用场景和优先级
·
# 1. ROS2依赖:rclcpp(用ament_target_dependencies)
find_package(rclcpp REQUIRED)
# 2. 非ROS2依赖:OpenCV(用find_package+target_link_libraries)
find_package(OpenCV REQUIRED)
# 3. 自定义依赖:自己写的头文件在src/include(用target_include_directories)
add_executable(robot_server src/robot_server.cpp)
# 绑定ROS2依赖(rclcpp)
ament_target_dependencies(robot_server rclcpp)
# 绑定非ROS2依赖(OpenCV)+ 自定义头文件路径
target_include_directories(robot_server PUBLIC src/include)
target_link_libraries(robot_server ${OpenCV_LIBS})
| 命令 | 核心作用 | 适用场景 | 优先级 / 推荐度 |
|---|---|---|---|
ament_target_dependencies |
一站式配置 ROS2 依赖(头文件 + 库路径 + 链接) | ROS2 生态内的依赖(rclcpp、std_msgs 等) | 最高(优先用) |
target_link_libraries |
绑定具体库文件(.so/.a) | 非 ROS2 依赖(OpenCV、Boost 等) | 高(必须用) |
target_include_directories |
给指定目标设置头文件路径(目标级) | 自定义头文件、非 ROS2 依赖的头文件 | 高(替代 include_directories) |
link_directories |
全局设置库文件搜索路径 | 库文件在非标准路径(极少用) | 低(尽量不用) |
include_directories |
全局设置头文件搜索路径 | 头文件在非标准路径(极少用) | 低(尽量不用) |
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)