You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用catkin编译依赖qpOASES的ROS代码时遇包配置文件缺失问题

解决catkin编译时找不到qpOASES的问题

问题本质

你克隆的qpOASES并非catkin兼容包,catkin build不会自动编译它,也无法生成find_package所需的qpOASESConfig.cmake或qpoases-config.cmake配置文件,因此主包的CMake无法识别它。

解决方案

方案1:使用catkin封装的qpOASES包

替换为专门适配catkin的qpOASES封装包(如qpOASES_catkin),将其克隆到catkin工作空间的src目录下,直接执行catkin build即可。这类封装包会自动生成catkin所需的配置文件,主包中的find_package(catkin REQUIRED COMPONENTS ... qpOASES ...)就能正常识别。

方案2:手动编译安装qpOASES到系统

进入qpOASES源码目录,手动编译并安装到系统路径,让CMake能全局找到它:

cd ~/catkin_ws/src/qpOASES
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

安装完成后重新执行catkin build,主包的find_package(qpOASES)就能找到系统中的配置文件。

方案3:手动在主包CMakeLists.txt中指定qpOASES路径(临时方案)

如果不想安装到系统,可直接在主包的CMakeLists.txt中手动引入qpOASES的头文件和库:

  1. 移除find_package(catkin REQUIRED COMPONENTS)列表中的qpOASES(因为它不是catkin组件)。
  2. 在CMakeLists.txt开头添加:
# 指定qpOASES的源码根目录(根据实际路径调整)
set(QPOASES_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../qpOASES")
# 需先手动编译qpOASES到build目录
include_directories(${QPOASES_ROOT}/include)
link_directories(${QPOASES_ROOT}/build/lib)
  1. 在编译节点/库时,链接qpOASES库:
target_link_libraries(你的节点名或库名
  ${catkin_LIBRARIES}
  qpOASES
)

额外注意

你的CMakeLists.txt中存在拼写错误:${qpAOSES_INCLUDE_DIRS}应为${qpOASES_INCLUDE_DIRS},修复上述核心问题后可一并修正。

内容的提问来源于stack exchange,提问作者Bilal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:53:11