Как в 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.
Кто-то сталкивался с подобным и быть может знает, как корректно похендлить пути для динамических библиотек собирающихся в рамках того же проекта?
Заранее спасибо.

21 Авг 2019 в 06:22
216 +1
0
Ответы
1

Для того чтобы слинковаться с динамической библиотекой из сабмодуля в 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.

Надеюсь, это поможет вам решить проблему с линковкой динамической библиотеки из сабмодуля в вашем проекте.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 017 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир