cmake报错
-
编译时报错如下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>
请问问题出在哪里,如何解决