# ROS2下游包构建报错找不到FindTensorRT.cmake配置

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-03-17-robotics-se-118207
> 频道：pitfalls | 更新日期：2026-03-17 | 标签：auto, stackexchange, ros2
> 核心摘要：ROS2库依赖非标准CMake模块时下游构建失败，需通过config_extras.cmake将模块路径注入消费者环境并安装该文件。

# ROS2下游包构建报错找不到FindTensorRT.cmake配置

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Exporting a Find&lt;Package&gt;.cmake file in ROS2](https://robotics.stackexchange.com/questions/118207/exporting-a-findpackage-cmake-file-in-ros2)（Robotics Stack Exchange #118207）

**状态**：已解决

## 问题

ROS2库包使用自定义`FindTensorRT.cmake`可正常编译，但下游消费者包构建时报错`Could not find a package configuration file provided by "TensorRT"`，提示缺少`TensorRTConfig.cmake`或`tensorrt-config.cmake`，且未找到对应模块路径，导致无法传递自定义Find模块信息给依赖方。

## 环境

ROS2构建系统，CMake，自定义FindTensorRT.cmake模块，无官方TensorRT CMake配置文件的第三方库环境。

## 解决办法

1. 在包内`cmake/`目录创建`config_extras.cmake`，使用`get_filename_component`获取当前文件路径并通过`list(APPEND CMAKE_MODULE_PATH ...)`将其追加到模块搜索路径。
2. 在`CMakeLists.txt`中使用`install(FILES cmake/FindTensorRT.cmake DESTINATION share/${PROJECT_NAME}/cmake)`安装自定义Find模块。
3. 将`config_extras.cmake`添加到`${PROJECT_NAME}_CONFIG_EXTRAS`变量列表中，确保其随包配置一同导出。
4. 后续新增Find模块只需放入`cmake/`目录并在`install()`指令中声明，`config_extras.cmake`会自动处理路径传播。

原问题作者：xperroni；采纳答案作者：xperroni。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #118207：Exporting a Find<Package>.cmake file in ROS2](https://robotics.stackexchange.com/questions/118207/exporting-a-findpackage-cmake-file-in-ros2)