【发布时间】:2016-10-28 19:26:29
【问题描述】:
我已经阅读了几个关于在 CMake 中包含 .so 库的线程(和文档),但在我看来,我并没有陷入我所读到的错误中,即:
- 提供的库名称不正确
- 指定的路径不正确
那我做错了什么?我在 Android Studio 中工作,我的 app 目录中有一个 cmake 文件。它可以找到一些东西,但找不到有问题的 .so 文件,其路径为:
app/src/main/cpp/libusb-android-open2/android/libs/armeabi/libusb1.0.so
这是我的 cmake 文件:
# 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 )
我也试过了:
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
)
【问题讨论】:
-
你已经读过这个CMake wiki article,不是吗?
-
@agg3l :我已经看过了,但也许你可以解释一下,因为我不清楚如何继续?首先,我没有使用包,而是使用
.so文件,我必须自己交叉编译。第二,你能告诉我LibXML++_LIBRARIES是什么意思吗?它应该是一个目录吗?.so文件列表? -
find_library 是否使用 PATH 的绝对值?
-
@Th.Thielemann:没有。
标签: android-studio linker cmake