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

    cmake找不到rosidl_typesupport_c

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    cmake humble cmake报错
    3
    7
    750
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      starRiver.lea
      最后由 编辑

      cmake_minimum_required(VERSION 3.8)
      project(village_wang)
      
      if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
        add_compile_options(-Wall -Wextra -Wpedantic)
      endif()
      
      set(CMAKE_PREFIX_PATH "/opt/ros/humble")
      # find dependencies
      find_package(ament_cmake REQUIRED)
      find_package(rclcpp REQUIRED)
      
      if(BUILD_TESTING)
        find_package(ament_lint_auto REQUIRED)
        # the following line skips the linter which checks for copyrights
        # comment the line when a copyright and license is added to all source files
        set(ament_cmake_copyright_FOUND TRUE)
        # the following line skips cpplint (only works in a git repo)
        # comment the line when this package is in a git repo and when
        # a copyright and license is added to all source files
        set(ament_cmake_cpplint_FOUND TRUE)
        ament_lint_auto_find_test_dependencies()
      endif()
      
      ament_package()
      

      cmake配置文件运行时找不到rosidl_typesupport_c包,ament_cmake这个可以找到
      cmake报错

      CMake Error at /opt/ros/humble/share/rosidl_typesupport_c/cmake/get_used_typesupports.cmake:35 (message):
        No 'rosidl_typesupport_c' found
      Call Stack (most recent call first):
        /opt/ros/humble/share/rosidl_typesupport_c/cmake/rosidl_typesupport_c-extras.cmake:8 (get_used_typesupports)
        /opt/ros/humble/share/rosidl_typesupport_c/cmake/rosidl_typesupport_cConfig.cmake:41 (include)
        /opt/ros/humble/share/builtin_interfaces/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
        /opt/ros/humble/share/builtin_interfaces/cmake/builtin_interfacesConfig.cmake:41 (include)
        /opt/ros/humble/share/libstatistics_collector/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
        /opt/ros/humble/share/libstatistics_collector/cmake/libstatistics_collectorConfig.cmake:41 (include)
        /opt/ros/humble/share/rclcpp/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
        /opt/ros/humble/share/rclcpp/cmake/rclcppConfig.cmake:41 (include)
        CMakeLists.txt:12 (find_package)
      
      
      -- Configuring incomplete, errors occurred!```
      code_text
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        从您提供的错误信息来看,CMake 在配置过程中未能找到 rosidl_typesupport_c 包。这通常意味着 rosidl_typesupport_c 包的路径没有被正确地添加到 CMake 的搜索路径中,或者该包并未被正确安装。

        这里有几个步骤可以帮助您解决这个问题:

        1. 确认 rosidl_typesupport_c 是否已安装:
          确保 rosidl_typesupport_c 包已经在您的 ROS 2 环境中正确安装。您可以通过运行以下命令来检查:

          dpkg -l | grep rosidl-typesupport-c
          

          如果此命令没有返回任何结果,那么您可能需要安装它。在 ROS 2 Humble 中,您可以使用以下命令安装:

          sudo apt install ros-humble-rosidl-typesupport-c
          
        2. 检查 CMAKE_PREFIX_PATH:
          您已经在 CMakeLists.txt 中设置了 CMAKE_PREFIX_PATH 为 /opt/ros/humble,这是正确的。但是,确保这个路径确实包含了所有需要的 ROS 2 包。通常,如果您是通过 ROS 2 的官方安装脚本或包管理器安装的,那么包应该位于这个路径下。

        3. 检查 CMakeLists.txt 中的依赖查找:
          您的 CMakeLists.txt 中使用了 find_package 来查找依赖,但是对于 rosidl_typesupport_c,通常它应该是作为其他包的依赖而被间接找到的。如果您直接需要找到并使用 rosidl_typesupport_c,请确保它已经在您的项目中作为依赖被声明(虽然通常这是通过其他 ROS 2 包如 rclcpp 自动处理的)。

        4. 清理并重新构建:
          有时候,旧的构建文件可能会导致问题。尝试清理您的构建目录(通常是 build 文件夹),然后重新运行 CMake。

        5. 检查环境变量:
          确保您的 source /opt/ros/humble/setup.bash(或对应的 shell 初始化脚本)已经执行,这会将 ROS 2 的环境变量设置正确。

        6. 查看详细的 CMake 输出:
          运行 CMake 时添加 -DCMAKE_VERBOSE_MAKEFILE=ON 选项,这将显示更多的详细信息,可能会帮助您诊断问题。

        如果上述步骤都不能解决问题,您可能需要检查是否有其他配置或安装问题,或者查看 ROS 2 社区或相关论坛寻求帮助。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @starRiver.lea
          最后由 编辑

          @starRiver-lea 在 cmake找不到rosidl_typesupport_c 中说:

          set(CMAKE_PREFIX_PATH "/opt/ros/humble")

          这个路径不对,你还是下source 改环境变量

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          S 1 条回复 最后回复 回复 引用 0
          • S
            starRiver.lea @小鱼
            最后由 编辑

            @小鱼 感谢您的回答,我只在/opt/ros/humble路径下面找到了setup.bash,使用wget http://fishros.com/install -O fishros && . fishros
            命令安装的正确路径应该是什么

            小鱼小 1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @starRiver.lea
              最后由 编辑

              @starRiver-lea 先 source /opt/ros/humble/setup.bash 接着执行 cmake

              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

              S 1 条回复 最后回复 回复 引用 0
              • S
                starRiver.lea @小鱼
                最后由 编辑

                @小鱼 执行完source /opt/ros/humble/setup.bash命令后仍然报错

                /snap/clion/296/bin/cmake/linux/x64/bin/cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/snap/clion/296/bin/ninja/linux/x64/ninja -G Ninja -S /home/lfy/workspace/ros2/village_wang -B /home/lfy/workspace/ros2/village_wang/cmake-build-debug
                -- Found ament_cmake: 1.3.10 (/opt/ros/humble/share/ament_cmake/cmake)
                -- Found rclcpp: 16.0.10 (/opt/ros/humble/share/rclcpp/cmake)
                -- Found rosidl_generator_c: 3.1.5 (/opt/ros/humble/share/rosidl_generator_c/cmake)
                -- Found rosidl_adapter: 3.1.5 (/opt/ros/humble/share/rosidl_adapter/cmake)
                -- Found rosidl_generator_cpp: 3.1.5 (/opt/ros/humble/share/rosidl_generator_cpp/cmake)
                CMake Error at /opt/ros/humble/share/rosidl_typesupport_c/cmake/get_used_typesupports.cmake:35 (message):
                  No 'rosidl_typesupport_c' found
                Call Stack (most recent call first):
                  /opt/ros/humble/share/rosidl_typesupport_c/cmake/rosidl_typesupport_c-extras.cmake:8 (get_used_typesupports)
                  /opt/ros/humble/share/rosidl_typesupport_c/cmake/rosidl_typesupport_cConfig.cmake:41 (include)
                  /opt/ros/humble/share/builtin_interfaces/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
                  /opt/ros/humble/share/builtin_interfaces/cmake/builtin_interfacesConfig.cmake:41 (include)
                  /opt/ros/humble/share/libstatistics_collector/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
                  /opt/ros/humble/share/libstatistics_collector/cmake/libstatistics_collectorConfig.cmake:41 (include)
                  /opt/ros/humble/share/rclcpp/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
                  /opt/ros/humble/share/rclcpp/cmake/rclcppConfig.cmake:41 (include)
                  CMakeLists.txt:12 (find_package)
                
                
                -- Configuring incomplete, errors occurred!
                
                [无法重新加载]
                
                
                S 1 条回复 最后回复 回复 引用 0
                • S
                  starRiver.lea @starRiver.lea
                  最后由 编辑

                  @starRiver-lea 在文件中能找到rosidl_typesupport_c这个包

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