我正在研究一个算法库,该库为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在我的情况下表现奇怪的原因。