gpt4 book ai didi

c++ - Ament Tool ROS中如何链接共享库

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:19 25 4
gpt4 key购买 nike

我正在使用 ROS ament 工具构建我的包。结构如下

LibA (build as shared library)

LibB (depends on LibA & build as shared library)

AppB (depends on LinB)

在 LibB 的 package.xml 中。我将依赖指定为 ...

package.xml (under dir LibB)

<build_depend>libA</build_depend>

在 AppB 的 package.xml 中。我将依赖指定为 ...

package.xml (under dir AppB)

<build_depend>libA</build_depend>
<build_depend>libB</build_depend>

现在构建顺序是正确的..

# Topological order
- libA
- libB
- AppB

现在在构建 AppB 时出现问题,找不到 LibA 和 LibB 的链接。

问题

如何将 LibA 链接到 LibB? (我应该使用什么语法)

如何将 LibA、LibB 链接到 AppB?

最佳答案

也许你应该使用ament_export在 LibA CMakeLists.txt , this page来自 ROS2 应该有帮助

# CMakeLists.txt for LibA
add_library(LibA SHARED src/LibA.cpp)
ament_target_dependencies(LibA rclcpp)
ament_export_interfaces(export_LibA HAS_LIBRARY_TARGET)
ament_export_libraries(LibA)
ament_export_include_directories(include)
ament_export_dependencies(
ament_cmake
rclcpp
)
install(
TARGETS LibA
EXPORT export_LibA
LIBRARY DESTINATION lib/${PROJECT_NAME}
ARCHIVE DESTINATION lib/${PROJECT_NAME}
RUNTIME DESTINATION lib/${PROJECT_NAME}
)
install(
DIRECTORY include/
DESTINATION include
)

然后在CMakeLists.txt来自 LibB 你应该有

# CMakeLists.txt for LibB
find_package(LibA REQUIRED)
add_library(LibB SHARED src/LibB.cpp)
target_include_directories(LibB PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
ament_target_dependencies(LibB
rclcpp
LibA
)
ament_export_libraries(LibB)
ament_export_include_directories(include)
ament_export_dependencies(
rclcpp
LibA
)
install(
TARGETS LibB
EXPORT export_LibB
LIBRARY DESTINATION lib/${PROJECT_NAME}
ARCHIVE DESTINATION lib/${PROJECT_NAME}
RUNTIME DESTINATION lib/${PROJECT_NAME}
)
install(
DIRECTORY include/
DESTINATION include
)

使用LibALibBAppB ,我认为你需要使用 ament_target_dependenciesLibB作为参数,然后使用 add_executable()功能

我想你可以改变 <build_depend> <depend> 的标签

关于c++ - Ament Tool ROS中如何链接共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56560309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com