我正在开发一个算法库,为 Android 应用程序提供预编译的 .so 文件。我们想在我们的库中使用 PyTorch C++ API,所以我付出了一些努力。但是我在尝试使用 CMake 构建时遇到了一些问题。
在不使用 NDK 中提供的情况下,构建工作良好android.cmake.toolchain
,并且编译后的程序按预期运行。当我尝试使用android.cmake.toolchain
构建库时出现问题, TorchConfig.cmake
(此文件由 Torch 提供)中的以下两行奇怪地出错了:
find_package(Caffe2 REQUIRED PATHS ${CMAKE_CURRENT_LIST_DIR}/../Caffe2) [Line 40]
find_library(C10_LIBRARY c10 PATHS "${TORCH_INSTALL_PREFIX}/lib") [Line 47]
尽管这些命令用于PATHS
指定绝对路径,但 CMake 坚持认为无法找到这些包和库。我尝试使用message
打印出这些路径并检查,CMaKe 应该寻找的文件(Caffe2Config.cmake
和libc10.so
)确实存在于指定的路径中。
我知道 android 工具链会更改要使用的编译器(捆绑的 clang),但我看不出 cmake 在我的情况下表现异常的原因。