鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    cmake报错

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    gazebo cmake error ros2
    1
    1
    190
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      2511624533
      最后由 编辑

      编译时报错如下CMake Error at CMakeLists.txt:20 (add_executable):
      Target "pd_controller" links to target
      "robot_state_publisher::robot_state_publisher" but the target was not
      found. Perhaps a find_package() call is missing for an IMPORTED target, or
      an ALIAS target is missing?cmake代码如下cmake_minimum_required(VERSION 3.8)
      project(spatial5r_robot)

      set(CMAKE_CXX_STANDARD 17)

      核心依赖声明(严格顺序)

      find_package(ament_cmake REQUIRED)
      find_package(rclcpp REQUIRED) # 必须前置
      find_package(urdf REQUIRED) # 必须前置
      find_package(robot_state_publisher REQUIRED) # 关键包必须显式声明

      find_package(controller_interface REQUIRED)
      find_package(hardware_interface REQUIRED)
      find_package(controller_manager REQUIRED)
      find_package(rclcpp_lifecycle REQUIRED)
      find_package(pluginlib REQUIRED)
      find_package(std_msgs REQUIRED)
      find_package(CURL REQUIRED)

      add_executable(pd_controller src/pd_controller.cpp)

      依赖注入(仅包名)

      ament_target_dependencies(pd_controller
      controller_interface
      hardware_interface
      controller_manager
      rclcpp
      rclcpp_lifecycle
      pluginlib
      std_msgs
      urdf
      robot_state_publisher # 关键包名必须在此列出
      )

      显式链接命名空间目标

      target_link_libraries(pd_controller
      robot_state_publisher::robot_state_publisher # 必须带命名空间
      urdf::urdf
      CURL::libcurl
      )

      install(TARGETS pd_controller
      DESTINATION lib/${PROJECT_NAME}
      )

      install(DIRECTORY config launch urdf
      DESTINATION share/${PROJECT_NAME}
      )

      必须导出所有关键依赖

      ament_export_dependencies(
      controller_interface
      hardware_interface
      urdf
      robot_state_publisher # 关键修复!之前缺失此项
      )

      ament_package()
      package.xml代码如下<?xml version="1.0"?>
      <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
      <package format="3">
      <name>spatial5r_robot</name>
      <version>0.0.1</version>
      <description>PD Controller for Spatial5R Robot</description>
      <maintainer email="your@email.com">Your Name</maintainer>
      <license>Apache-2.0</license>

      <buildtool_depend>ament_cmake</buildtool_depend>

      <!-- 严格使用<depend>统一声明所有依赖 -->
      <depend>controller_interface</depend>
      <depend>hardware_interface</depend>
      <depend>controller_manager</depend>
      <depend>rclcpp</depend>
      <depend>rclcpp_lifecycle</depend>
      <depend>pluginlib</depend>
      <depend>std_msgs</depend>
      <depend>urdf</depend>
      <depend>robot_state_publisher</depend>
      <depend>libcurl</depend>
      </package>
      请问问题出在哪里,如何解决

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS