CMakeLists для плагинов беседки с несколькими файлами

У меня есть catkin_ws с пакетом A где я разрабатываю несколько плагинов для беседки. Когда я запускаю код на беседке, он говорит

gzserver: symbol lookup error: /home/xxx/catkin_ws/devel/lib/plugin.so: undefined symbol: _ZN4ORCA6KdTreeC1Ev

Я знаю, что проблема в CMakeLists.txt, У меня 4 файла, файл плагина .cppодин заголовок .h и два .c файлы, необходимые в плагине. Я попытался скомпилировать плагин с этими 4 файлами вместе, добавив

add_library(My_plugin plugins/plugin.cpp plugins/header.h plugins/file1.c plugins/file2.c )

но это не работает

Структура проекта

project
|_src
|  |_othersfiles
|  |_Plugins
|       |_plugin.cpp
|       |_header.h
|       |_file1.c
|       |_file2.c
|
|_CMakeLists.txt

Мой актуальный CMakeLists.txt это что-то похожее:

find_package(gazebo REQUIRED)
 ${PROJECT_SOURCE_DIR}/src/plugins
 ${PROJECT_SOURCE_DIR}/src/
 ${GAZEBO_INCLUDE_DIRS})

include_directories(
  ${Boost_INCLUDE_DIR}
  ${catkin_INCLUDE_DIRS}
  ${GAZEBO_INCLUDE_DIRS}
  ${PROJECT_SOURCE_DIR}/plugins
  ${PROJECT_SOURCE_DIR}
  ${PROJECT_BINARY_DIR}
)
link_directories(${GAZEBO_LIBRARY_DIRS}
${PROJECT_SOURCE_DIR}/src/plugins ${PROJECT_SOURCE_DIR}/src/)


add_library(MyPlugin src/plugins/plugin.cpp)

set(SOURCE_FILES
  ${PROJECT_SOURCE_DIR}/src/plugins/file1.c
  ${PROJECT_SOURCE_DIR}/src/plugins/file2.c

)
add_library(MyPlugin  ${PROJECT_SOURCE_DIR}/src/plugins/plugin.cpp)


target_link_libraries(MyPlugin ${catkin_LIBRARIES} ${GAZEBO_LIBRARIES})

Как я должен написать CMakeLists.txt для того, чтобы правильно связать файлы?

0 ответов

Другие вопросы по тегам