[英]CMake can't find external library
我正在嘗試構建使用LibUSB庫的應用程序。
在前面的問題中,我被告知要使用find_path
和find_library
使CMake搜索標頭和二進制文件。 但是,即使在使用dnf
手動查找庫的安裝位置並將它們指定為PATHS
或HINTS
我仍然始終會收到錯誤消息:
/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.