簡體   English   中英

CMake找不到外部庫

[英]CMake can't find external library

我正在嘗試構建使用LibUSB庫的應用程序。

在前面的問題中我被告知要使用find_pathfind_library使CMake搜索標頭和二進制文件。 但是,即使在使用dnf手動查找庫的安裝位置並將它們指定為PATHSHINTS我仍然始終會收到錯誤消息:

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

下面是relevent 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)

顯然,在這種黑客大亂中我做錯了什么,但是有人可以告訴我什么嗎?

您不會在任何地方使用查找操作的結果。 您告訴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})

如原始問題中的“返回”所示, 此處的所有查找和包含函數可以簡單地替換為:

target_link_libraries(project_name <other_dependencies> usb-1.0)

在定義構建目標的文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM