Импортировать внешнюю библиотеку в узел ROS - PullRequest
0 голосов
/ 24 сентября 2019

Я впервые использую переполнение стека, поэтому я немного новичок в этом.Я работал над личным робототехническим проектом и скачал каталог GitHub.Я уже скомпилировал его, протестировал (он работает) и сгенерировал файл library.a (потому что я работаю с Ubuntu 16.04 и ROS Kinetic).Чего я не знаю, так это того, что мне нужно добавить в мой файл CMakeLists.txt, чтобы загрузить функции связи в файл cpp узла ROS.

Мое фактическое описание для компиляции в файле CMakeLists.txt следующее:

...
add_executable(test_node src/test_node.cpp)
add_dependencies(test_node ${catkin_EXPORTED_TARGETS})
target_link_libraries(test_node ${catkin_LIBRARIES})
...

Я знаю, что мне нужно добавить библиотеку в target_link_libraries, если библиотека была *.so файл, но это не так.Что я должен добавить в мой CMakeLists.txt файл, чтобы загрузить библиотечные функции в мой узел ROS?

1 Ответ

0 голосов
/ 24 сентября 2019

Ваш ответ основан на свойстве функции add_library ()

Смотрите этот пример блока:

add_library(library_name STATIC IMPORTED)
set_target_properties(library_name PROPERTIES IMPORTED_LOCATION path/to/your/lib.a)

С этим вы можете приступить к добавлению этой библиотекис:

target_link_libraries(your_target library_name)

Но не забудьте добавить эту статическую библиотеку включающих файлов в вашу цель.


Проблема решена с помощью следующего кода:

...
find_package(Threads)
add_library(github_library STATIC IMPORTED GLOBAL)
set_target_properties(my_library PROPERTIES IMPORTED_LOCATION 
my_library_directory/my_library.a)
...
target_link_libraries(my_cpp_ros_node ${catkin_LIBRARIES} my_library ${CMAKE_THREAD_LIBS_INIT})
...
...