Ich habe mehrere Threads (und Dokumente) auf einschließlich .so
Bibliotheken mit CMake gelesen, aber es scheint mir nicht, dass ich in die Fehler gefallen bin, die ich gelesen habe, nämlich :CMake nicht finden .so Bibliothek
- einen falschen Namen Bibliothek liefert
- Angabe einer falschen Pfad
Also, was ich verkehrt mache? Ich arbeite in Android Studio, und ich habe eine cmake-Datei in meinem Verzeichnis app
. Es kann einige Dinge finden, aber nicht die .so-Datei in Frage, deren Pfad:
app/src/main/cpp/libusb-android-open2/android/libs/armeabi/libusb1.0.so
Hier ist meine cmake-Datei:
# This succeeds
add_library(demo-libusb SHARED src/main/cpp/demo-libusb.cpp)
# This succeeds
find_library(log-lib log)
if (log-lib)
message(WARNING "HAS loglib") # This message gets printed
else(log-lib)
message(SEND_ERROR "NO loglib")
endif(log-lib)
# This fails
link_directories(src/main/cpp/libusb-android-open2/android/libs/armeabi)
find_library(usb-lib NAMES usb1.0 libusb1.0.so)
if (usb-lib)
message(WARNING "HAS libusb")
else(usb-lib)
message(SEND_ERROR "NO libusb") # This message gets printed
endif(usb-lib)
ich auch versucht:
find_library(usb-lib NAMES libusb1.0.so usb1.0 PATHS
src/main/cpp/libusb-android-open2/android/libs/armeabi
src/main/cpp/libusb-android-open2/android/libs/armeabi-v7a
)
Sie haben das gelesen [CMake Wiki-Artikel] (https://cmake.org/Wiki/CMake:How_To_Find_Libraries#Using_external_libraries_that_CMake_doesn.27t_yet_have_modules_for), nicht wahr? – agg3l
@ agg3l: Ich habe das gesehen, aber vielleicht könntest du ein wenig aufklären, da ich nicht weiß, wie es weitergehen soll? Erstens arbeite ich nicht mit einem Paket, sondern mit einer '.so' Datei, die ich selbst kompilieren musste. Zweitens, kannst du mir sagen, was die Bedeutung von LibXML ++ _ BIBLIOTHEKEN ist? Soll es ein Verzeichnis sein? Eine Liste von '.so' Dateien? – JellicleCat
Arbeitet find_library mit absoluten Werten für PATH? –