Включая мою собственную общую библиотеку с cmake

У меня есть следующий код в моем CMakeLists.txt для поиска моей общей библиотеки libsieve.so

set(CPPLIB_DIR "${CMAKE_SOURCE_DIR}/../core/build")
find_library(CPPLIB_SIEVE_LIBRARY NAMES libsieve PATHS CPPLIB_DIR)

Но он терпит неудачу и не найдет мою библиотеку. У меня есть следующая структура каталогов:

  • ядро
    • построить: libsieve.so
  • проект: CMakeLists.txt

Что я делаю неправильно?

0

Решение

Я не знаю, почему cmake не находит нужную библиотеку, но я могу предложить способ сделать это с помощью cmake-gui: если при первом запуске «configure» не удается найти библиотеку, вы можете указать ее на Нужная библиотека вручную (задайте полный абсолютный путь). В большинстве случаев такое решение работает для меня.

Также, если библиотека была построена с помощью одной цепочки инструментов (скажем, Intel C ++), а ваш проект строится с другой цепочкой инструментов (скажем, clang), сбой при поиске библиотеки может быть вызван двоичной несовместимостью между проектом и библиотекой.

Upd. Первоначальной проблемой была ссылка на CPPLIB_DIR. Это должно было быть:

find_library(CPPLIB_SIEVE_LIBRARY NAMES sieve PATHS ${CPPLIB_DIR})
1

Другие решения

Cmake find_library ожидать, что вы предоставите имя библиотеки или имя файла библиотеки.

Вы смешали их, добавив префикс «lib» к имени вашей библиотеки. Поэтому вы должны попытаться заменить libsieve либо sieve или же libsieve.so,

0

По вопросам рекламы [email protected]