Как в CMake слинковаться с динамической библиотекой из сабмодуля? Всем привет, Возникла следующая проблема. Есть проект, который собирается cmake'ом, структура его примерно такая: add_subdirectory(foo_lib) // тут строится динамическая библиотека add_subdirectory(foo_app) // тут строится приложение, которое использует foo_lib в foo_app библиотека линкуется примерно так: target_link_libraries(foo_app ... foo_lib) И вот тут в случае, если foo_lib собирается в статическую либу, то все работает корректно, но в случае, когда она является динамической библиотекой, при сборке foo_app линкер падает с undefined reference для методов из foo_lib. Кто-то сталкивался с подобным и быть может знает, как корректно похендлить пути для динамических библиотек собирающихся в рамках того же проекта? Заранее спасибо.
Для того чтобы слинковаться с динамической библиотекой из сабмодуля в CMake, необходимо правильно настроить пути к динамической библиотеке при линковке приложения.
Один из способов сделать это - использовать переменную CMAKE_CURRENT_BINARY_DIR для указания пути к сгенерированным файлам сабмодуля. Например, если вы собираете динамическую библиотеку в сабмодуле foo_lib, то в файле CMakeLists.txt вашего приложения foo_app можно добавить следующую строку:
Это укажет CMake использовать динамическую библиотеку из подпапки foo_lib, которая была сгенерирована во время сборки проекта.
Также важно убедиться, что пути к сгенерированным файлам правильно настроены в вашем проекте, например, через переменные CMAKE_BINARY_DIR или другие подходящие переменные CMake.
Надеюсь, это поможет вам решить проблему с линковкой динамической библиотеки из сабмодуля в вашем проекте.
Для того чтобы слинковаться с динамической библиотекой из сабмодуля в CMake, необходимо правильно настроить пути к динамической библиотеке при линковке приложения.
Один из способов сделать это - использовать переменную CMAKE_CURRENT_BINARY_DIR для указания пути к сгенерированным файлам сабмодуля. Например, если вы собираете динамическую библиотеку в сабмодуле foo_lib, то в файле CMakeLists.txt вашего приложения foo_app можно добавить следующую строку:
target_link_libraries(foo_app ${CMAKE_CURRENT_BINARY_DIR}/foo_lib/foo_lib)
Это укажет CMake использовать динамическую библиотеку из подпапки foo_lib, которая была сгенерирована во время сборки проекта.
Также важно убедиться, что пути к сгенерированным файлам правильно настроены в вашем проекте, например, через переменные CMAKE_BINARY_DIR или другие подходящие переменные CMake.
Надеюсь, это поможет вам решить проблему с линковкой динамической библиотеки из сабмодуля в вашем проекте.