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

使用apt安装Drake时的Ament CMake传递依赖问题

解决依赖Drake的base_lib包下游依赖找不到drake::drake的问题

错误原因

base_lib自身构建时能正常找到drake::drake,但在导出CMake配置时,没有将Drake作为依赖传递给下游包。当下游包执行find_package(base_lib)后,CMake解析base_lib的链接接口时,发现依赖drake::drake但未触发对Drake的查找,因此报错。

解决方案

在base_lib的CMakeLists.txt中添加导出Drake依赖的命令,让下游包自动知晓需要先查找Drake。

具体修改

在ament_export_targets(export_${PROJECT_NAME})之后新增一行:

ament_export_dependencies(drake)

修改后的相关代码片段:

ament_export_include_directories(include/${PROJECT_NAME})
ament_export_targets(export_${PROJECT_NAME})
ament_export_dependencies(drake)  # 新增该行
ament_export_libraries(${PROJECT_NAME})

额外说明

  • 完成修改后,下游包执行find_package(base_lib)时会自动触发find_package(drake),无需手动添加(前提是Drake的安装路径/opt/drake在CMake的CMAKE_PREFIX_PATH中,或者base_lib中find_package(drake)的配置能正确传递路径信息)。
  • 若下游包仍无法找到Drake,可在其CMakeLists.txt中添加list(APPEND CMAKE_PREFIX_PATH /opt/drake),或确保系统环境变量CMAKE_PREFIX_PATH包含/opt/drake。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:22:46