Как устранить ошибку «Не удалось найти необходимый компонент« libdlib »»? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь скомпилировать этот пакет ROS, но я получаю следующую ошибку

 Could not find a package configuration file provided by "libdlib" with any of the following names:

libdlibConfig.cmake
libdlib-config.cmake

Add the installation prefix of "libdlib" to CMAKE_PREFIX_PATH or set
"libdlib_DIR" to a directory containing one of the above files.  If
"libdlib" provides a separate development package or SDK, be sure it has
been installed.

Ссылаясь на некоторые другие ответы на SO и в других местах, я добавил следующие строки в CMakeLists.txt

include(/home//src/dlib/dlib/cmake)
include_directories (${dlib_INCLUDE_DIRS})
target_link_libraries(room_segmentation_server ${dlib_LIBRARIES})

Я также установил dlib, используя эти инструкции, но ошибка сохраняется.

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

1 Ответ

0 голосов
/ 28 февраля 2019

Прежде всего: вам будет легче помочь, если вы предоставите свой код и точную ошибку, с которой столкнулись.Я предполагаю, что вы пытаетесь найти библиотеку с помощью find_package(dlib CONFIG)?!

libdlibConfig.cmake - это файл CMake, который должен быть предоставлен вашей установкой dlib.Этот файл содержит все, что нужно для вашего cmake, чтобы найти пути включения и библиотеки вашей dlib -установки.С его помощью ваш cmake затем устанавливает переменные, которые вы пытаетесь использовать: dlib_INCLUDE_DIRS и dlib_LIBRARIES (указывая на соответствующие пути).

Для этого ваш cmake -колон жалуется, что такой libdlibConfig.cmake не может быть найден, либо у вас нет такого файла в вашей системе, либо он не находится в ожидаемом каталоге.В обоих случаях: переменные, которые вы пытаетесь использовать, не будут установлены.В качестве альтернативы может быть FindDlib.cmake -файл в вашей системе, который делает почти то же самое, на что вы можете сослаться по find_package(Dlib).

Если у вас нет ни одного из этих двух файлов, вам нужноукажите пути к include-dir и library-dir самостоятельно:

set(dlib_LIBRARIES "<path to your libdlib.dll>")
set(dlib_INCLUDE_DIR "<path to your dlib/include-folder>")
find_library(LIBDLIB dlib ${dlib_LIBRARIES})
target_include_directories(<your_target> ${dlib_INCLUDE_DIR})
target_link_libraries(<your_target> LIBDLIB)
...