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
для того, чтобы правильно связать файлы?