LINUX.ORG.RU

Вопрос по cmake


0

1

Есть проект с такой структурой:
libs
prog1
prog2
CMakeLists.txt,
где libs, prog1, и prog2 - проекты со своими CMakeLists.txt. причем prog1 и prog2 зависят от собраной библиотеки libs libs.so.

Подскажите, что и как прописать в корневом CMakeLists.txt и одноименных файлах проектов prog1 и prog2, чтобы при сборке сначала собиралась библиотека, а потом подключая ее собирались prog1 и prog2?
Спасибо.


Ответ на: комментарий от Reset

При выполнении cmake выдает ошибку, что библиотека libs.so не найдена.
Подключаю ее prog1/CMakeLists.txt так:
find_library(LIBS_LIB csv libs)
target_link_libraries(import_data «${LIBS_LIB}»)

sirius
() автор топика
Ответ на: комментарий от Reset

При выполнении cmake выдает ошибку, что библиотека libs.so не найдена.
Подключаю ее в prog1/CMakeLists.txt так:
find_library(LIBS_LIB libs «директория, где после сборкидолжны лежать собранные библиотеки проекта libs» )
target_link_libraries(prog1 «${LIBS_LIB}»)

sirius
() автор топика
Ответ на: комментарий от Reset

А как их правильно подключить? Так работает, если уже есть готовые бинарники либ. А если нет - то облом.
Извиняюсь, если вопросы глупые, - cmake только начал изучать, многое не понятно

sirius
() автор топика
project/CMakeLists.txt:
ADD_SUBDIRECTORY(library)
ADD_SUBDIRECTORY(application)

project/library/CMakeLists.txt:
ADD_LIBRARY(foo SHARED foo.c)

project/application/CMakeLists.txt:
ADD_EXECUTABLE(bar bar.c)
TARGET_LINK_LIBRARIES(bar foo)

Фсё.

slovazap ★★★★★
()
Ответ на: комментарий от sirius

target_link_libraries(prog1 lib1) cmake знает, что lib1 это твоя библиотека, соответственно он знает где она лежит, никаких find_library не нужно

Reset ★★★★★
()
Ответ на: комментарий от Reset

Reset, slovazap - спасибо, все получилось.

Хотя, сначала линковщик выдавал «undefined reference to» на мои библиотечные функции. Попробовал переименовать библиотеку - и все собралось.

sirius
() автор топика
Ответ на: комментарий от harvos

Само должно все работать. Если какие-то непонятные undefined reference появляются или add_dependency приходится руками делать, то как-то криво cmakelists написаны.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.