У меня есть библиотека catkin под именем mylib, которую я создаю с помощью catkin build
Кроме того, у меня есть узел, в котором используются функции из этой библиотеки.Я включил эту ссылку, как обычно в CMakeLists.txt узла:
find_package(catkin REQUIRED COMPONENTS
mylib
)
add_executable(exec
src/main.cpp
)
target_link_libraries(exec
${catkin_LIBRARIES}
)
Однако на этот раз это не удалось.Затем я добавил ошибку компоновщика:
find_package(catkin REQUIRED COMPONENTS
mylib
)
find_library( MYLIB NAMES
mylib
)
message(${MYLIB})
add_executable(exec
src/main.cpp
)
add_dependencies(exec ${MYLIB})
target_link_libraries(exec
${catkin_LIBRARIES}
${MYLIB}
)
Дело в том, что оператор message () выводит правильный путь к библиотеке, где я также могу найти его в проводнике.Однако я получаю предупреждение:
(add_dependencies): Policy CMP0046 is not set: Error on non-existent dependency in add_dependencies.
, который ссылается на точно такой же путь к библиотеке и говорит, что он не существует.
Ошибка компоновщика:
/usr/bin/ld: cannot find -lmylib
Примечание: я мог бы устранить ошибку, добавив путь к библиотеке вручную
link_directories($ENV{HOME}/test/devel/lib)
Я не понимаю, почему библиотека была найдена первой, но не может быть связана как ее имя пакета.Но это работает, предоставляя полный путь.Я ценю любое понимание!