Я пытаюсь использовать LibUSB в проекте. Однако всякий раз, когда я пытаюсь использовать основные функции libUSB я получаю следующее сообщение об ошибке:Как связать стороннюю библиотеку (LibUSB) в CMake
...src/main/main.cpp.o: In function `main':
...src/main/main.cpp:10: undefined reference to `libusb_init'
...src/main/main.cpp:11: undefined reference to `libusb_set_debug'
collect2: error: ld returned 1 exit status
установлен пакет LibUSB-Devel (я на Fedora 22), и мой IDE KDevelop находит и распознает заголовки, до точки он предлагает завершение кода LibUSB после добавления оператора импорта. У меня нет каких-либо пользовательских строк в моей IDE или CMake (моя система сборки), поэтому я хотел бы знать, что мне нужно, чтобы заставить CMake найти заголовки LibUSB.
Это содержимое main.cpp
, только в случае, если я испортил что-то:
#include <iostream>
#include <libusb-1.0/libusb.h>
int main(int argc, char **argv) {
libusb_init(NULL);
libusb_set_debug(NULL, LIBUSB_LOG_LEVEL_WARNING);
/*snip*/
std::cout << "Hello, world! PTPID=" << std::endl;
return 0;
}
Ниже приведены CMakeLists.txt
:
../
cmake_minimum_required(VERSION 2.8.11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_BUILD_TYPE Debug)
project(aProjectThatHasHadIt'sNameObcured)
add_subdirectory(src)
.../SRC/cmakelists.txt просто добавляет в подкаталоги
.../src/main/
Неопределенные ссылки - это ошибки компоновщика, поэтому они собираются найти библиотеки, а не заголовки. Возможно, вы можете показать, как ваш проект использует CMake для связи с LibUSB? – Angew
Вы связываете двоичные файлы с libusb? – Otomo
похоже, что вы misisng некоторые линкер-флагов для libusb –