cmake — c ++: неопределенная ссылка на ERROR

Я хочу добавить новую библиотеку c ++ из cpd (https://github.com/gadomski/cpd) к одному проекту в рос.
Я уже успешно установил библиотеку cpd в моей ОС Ubuntu.

Теперь я хочу использовать его в среде ROS.

В файле CMakeList.txt я уже добавил строку

find_package(CPD REQUIRED)

include_directories(include
${catkin_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIR}
${PCL_INCLUDE_DIRS}
${CPD_INCLUDE_DIRS}
)

target_link_libraries(background_removal
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
${PCL_LIBRARIES}
${CPD_LIBRARIES}
)

тогда в исходном коде я просто добавил

#include <cpd/nonrigid_lowrank.hpp>

а также пример кода

cpd::NonrigidLowrank reg;
cpd::Registration::ResultPtr result = reg.run(X, Y);

Но после того, как я скомпилировал его, он выдает ошибку: неопределенная ссылка на `cpd :: NonrigidLowrank :: NonrigidLowrank () ‘

ошибка: неопределенная ссылка на `cpd :: Registration :: run (arma :: Mat const&, arma :: Mat const&) const ‘

Я полагаю, что библиотека cpd не связана с ROS. Я что-то неправильно сделал, чтобы вызвать библиотеку cpd?

0

Решение

undefined reference ошибка компоновщика, а не ошибка компилятора Ваше использование include_directories() все в порядке, но вы забыли также добавить ${CPD_LIBRARIES} (1) (2) к target_link_libraries() вашей цели.


(1): Просто предположите, что FindCPD.cmake «работает» так же, как и все остальные модули FindXyz.cmake. Сам никогда не работал с CPD.

(2): угадав из своего фрагмента, вам также нужно будет добавить ${OpenCV_LIBRARIES} а также ${PCL_LIBRARIES}

3

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector