weixin_55072658 2024-04-07 11:18 采纳率: 0%
浏览 106

Ros2自定义消息时候配置CmakeLIsts文件后编译报错

CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list):
list index: 1 out of range (-1, 0)
Call Stack (most recent call first):
CMakeLists.txt:26 (rosidl_generate_interfaces)

CMake Error at /opt/ros/humble/share/rosidl_generator_c/cmake/rosidl_generator_c_generate_interfaces.cmake:69 (message):
Target dependency '/home/cyh/ros2' does not exist
Call Stack (most recent call first):
/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
/opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
CMakeLists.txt:26 (rosidl_generate_interfaces)

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-07 11:18
    关注

    引自免费微信小程序:皆我百晓生

    首先,感谢您提供这个问题。让我们从头开始解决它。

    在CMakeLists.txt中,你需要为Ros2添加一些自定义消息并使其能够成功编译。这包括定义一个名为message_ids的变量,并将其设置为你想要发送的消息ID列表。

    在生成接口文件时,这个列表应该被包含在message_ids变量中。例如:

    message_ids = (
        "MyHello"
        "Hello, World!"
    );
    

    然后,你需要在CMakeLists.txt中设置相应的构建步骤。例如,如果你想构建一个名为my_qt_app的自定义应用,你应该这样做:

    set(CMAKE_BUILD_TYPE Release)
    set(CMAKE_CXX_STANDARD 11)
    add_executable(my_qt_app src/main.cpp)
    target_link_libraries(my_qt_app ${CMAKE_NAME}_impls)
    

    在这个例子中,我们设置了构建类型为Release,并使用了C++标准11。然后,我们将自定义应用程序库添加到构建过程中。

    关于自定义消息,CMake会在某些情况下抛出错误,这是因为它们在编译阶段并不总是可以识别和处理。你可以尝试使用--no-plugin=generate_message_ids选项来启用这个功能。

    关于依赖关系的问题,你需要确保你正确地配置了所有需要的库。在CMakeLists.txt中,你可以看到ament_helper/CMakeLists.txt是一个很好的起点,因为它包含了如何管理和管理依赖项的方法。

    如果你仍然遇到问题,或者你想自己画图生成模拟图,我会很高兴为你提供更多支持和指导。但在此之前,你可以尝试我提供的方法来解决这个问题。如果有任何其他问题或需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月7日

悬赏问题

  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 python的EOFError该怎么解决?
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
  • ¥15 layui数据重载无效
  • ¥15 寻找了解qq家园纵横四海的程序猿。
  • ¥15 optisystem
  • ¥15 VB.NET画图时的撤销编程