0

我正在尝试构建一个使用 LibUSB 库的应用程序。

在我在这里问的上一个问题中,有人告诉我使用find_pathfind_library让 CMake 搜索标题和二进制文件。但是,即使在手动查找库的安装位置dnf并将它们指定为PATHSor之后,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)

很明显,我在这堆黑客行为中做错了什么,但有人能告诉我什么吗?

4

2 回答 2

1

您没有在任何地方使用 find 操作的结果。您告诉 CMake 查找标头并将找到的路径存储在 中LIBUSB_INCLUDE_DIR,并找到库并将其位置存储在 中LIBUSB_LIBRARY,然后您忽略这些并使用硬编码"/usr/lib/" "/usr/lib64/"的 andUSB代替。试试这个:

target_include_directories(project PRIVATE ${LIBUSB_INCLUDE_DIR})
target_link_libraries(project ${LIBUSB_LIBRARY})
于 2016-01-26T16:05:19.127 回答
0

如回到原来的问题所示,在这里,所有的发现和包括功能都可以简单地替换为:

target_link_libraries(project_name <other_dependencies> usb-1.0),

在定义构建目标的文件中。

于 2016-01-29T08:40:34.717 回答