Я использовал библиотеку mrpt, чтобы обернуть алгоритм Diffodo вокруг ROS. Мои системные спецификации: Ubuntu 18.04 и Ive установили mrpt с помощью ppa с платформы mrpt, в настоящее время Ive получил версию 1.9.9 mrpt.
Я использовал следующее в моем cmake для использования mrpt в коде, который я создал вот так:
find_package(MRPT REQUIRED poses gui vision)
# I got these variables
MRPT_LIBRARIES=mrpt::poses;mrpt::gui;mrpt::vision
MRPT_CONFIG=/usr/share/mrpt/mrpt-config.cmake
MRPT_CONSIDERED_CONFIGS=/usr/share/mrpt/mrpt-config.cmake
MRPT_CONSIDERED_VERSIONS=1.9.9
MRPT_DIR=/usr/share/mrpt
MRPT_FOUND=1
MRPT_LIBS=mrpt::poses;mrpt::gui;mrpt::vision
MRPT_VERSION=1.9.9
MRPT_VERSION_COUNT=3
MRPT_VERSION_MAJOR=1
MRPT_VERSION_MINOR=9
MRPT_VERSION_PATCH=9
MRPT_VERSION_TWEAK=0
.
.
.
target_link_libraries(MyexeA ${MRPT_LIBRARIES})
target_link_libraries(MyLibA ${MRPT_LIBRARIES})
Это прекрасно работает для MyExeA до сих пор. Теперь я хочу создать MyLibA и использовать эту библиотеку в другом проекте.
Моя цель состоит в том, чтобы автоматически включить все зависимости MRPT (libs и include paths), чтобы в projectB.CMakefile я делал:
find_package(myprojectA REQUIRED)
MRPT загружается автоматически. Таким образом, дерево зависимостей будет mrpt-> projectA-> ProjectB .
Я хочу избежать повторного обнаружения MRPT find_package () в cmake projectB.
Что я пробовал? Я использовал catkin_package () для добавления всех зависимостей и включений, необходимых следующим образом:
catkin_package(
INCLUDE_DIRS include
LIBRARIES ${PROJECT_NAME} ${OpenCV_LIBS}
CATKIN_DEPENDS roscpp cv_bridge image_transport rospy std_msgs
DEPENDS OpenCV MRPT)
Но когда я делаю это, projectB не может найти включения из MRPT.
Моя следующая попытка состояла в том, чтобы использовать переменные MRPT_LIBRARIES и MRPT_INCLUDE_DIRS для добавления в пакет отслеживания, но в MRPT, похоже, нет MRPT_INCLUDE_DIRS, поэтому у меня нет возможности узнать, где находятся включаемые каталоги.
Как можно Я достиг этого? Где MRPT добавляет INCLUDE_DIRS, заставляя CMAKE в проекте A видеть заголовки? Есть ли лучший способ, кроме catkin_package, передать зависимости потребителям libA?
С уважением.