CMake не может найти внешнюю библиотеку

Я пытаюсь создать приложение, которое использует библиотеку LibUSB.

В предыдущем вопросе я задал Вот Мне сказали использовать find_path а также find_library заставить CMake искать заголовки и двоичные файлы. Однако даже после ручного поиска мест установки библиотеки с dnf и указав их как PATHS или же HINTS Я всегда все еще получаю ошибку:

/usr/bin/ld: cannot find -lUSB
collect2: error: ld returned 1 exit status

Ниже приведен соответствующий файл cmakelists.txt, моя строка импорта в main.cpp #include <libusb-1.0/libusb.h>

add_executable(project main.cpp)
find_path(LIBUSB_INCLUDE_DIR
NAMES libusb.h
PATHS "/usr/include/"PATH_SUFFIXES "include" "libusb")
find_library(LIBUSB_LIBRARY
NAMES USB
HINTS "/usr/lib/" "/usr/lib64/" "/usr/include/"PATH_SUFFIXES "lib" "lib32" "lib64")

target_include_directories(project PRIVATE "/usr/lib/" "/usr/lib64/")
target_link_libraries(project USB)

Понятно, что я делаю что-то не так в этой куче хаков, но кто-нибудь может мне сказать, что?

0

Решение

Вы нигде не используете результат ваших операций поиска. Вы говорите CMake найти заголовки и сохранить найденные пути в LIBUSB_INCLUDE_DIRи найти библиотеку и сохранить ее местоположение в LIBUSB_LIBRARY, а затем вы идете игнорировать их и использовать жестко "/usr/lib/" "/usr/lib64/" а также USB вместо. Попробуй это:

target_include_directories(project PRIVATE ${LIBUSB_INCLUDE_DIR})
target_link_libraries(project ${LIBUSB_LIBRARY})
1

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

Как показано в оригинальном вопросе, Вот, все функции поиска и включения могут быть заменены просто:

target_link_libraries(project_name <other_dependencies> usb-1.0),

в файле, где определена цель сборки.

0

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