Android studio 如何在Android Studio中构建LAPACK

Android studio 如何在Android Studio中构建LAPACK,android-studio,cmake,java-native-interface,lapack,cmakelists-options,Android Studio,Cmake,Java Native Interface,Lapack,Cmakelists Options,目前,我有一个Android项目,其中我使用JNI(Java本机接口)调用LAPACK C函数 我的JNI是: cmake_minimum_required(VERSION 3.4.1) project(LapackTest) add_library( native-lib SHARED native-lib.c #lapack/LAPACKE/example/lapacke_example_aux.c ) # Add depen

目前,我有一个Android项目,其中我使用JNI(Java本机接口)调用LAPACK C函数

我的JNI是:

cmake_minimum_required(VERSION 3.4.1)
project(LapackTest)
add_library( native-lib
        SHARED
        native-lib.c
        #lapack/LAPACKE/example/lapacke_example_aux.c
        )

# Add dependent libraries
add_library(blas STATIC IMPORTED)
set_property(TARGET blas PROPERTY IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/libblas.a)

add_library(lapack STATIC IMPORTED)
set_property(TARGET lapack PROPERTY IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/liblapack.a)


# Location of header files
include_directories(
        ${CMAKE_SOURCE_DIR}/lapack/BLAS
        ${CMAKE_SOURCE_DIR}/lapack/CBLAS
        ${CMAKE_SOURCE_DIR}/lapack/LAPACKE
        ${CMAKE_SOURCE_DIR}/lapack/SRC
        ${CMAKE_SOURCE_DIR}/lapack/TESTING
        ${CMAKE_SOURCE_DIR}/lapack/CBLAS
)

add_subdirectory(lapack)
本机lib.c

#include <jni.h>
#include "lapack/LAPACKE/include/lapack.h"
#include "lapack/LAPACKE/example/lapacke_example_aux.h"
 JNIEXPORT jstring JNICALL
Java_com_example_lapacktest_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject obj /* this */) {
    char hello[20] = "Hello from C++";
     double A[5][3] = {{1,2,3},{4,5,1},{3,5,2},{4,1,4},{2,5,3}};
     double b[5][2] = {{-10,12},{14,16},{18,-3},{14,12},{16,16}};
     lapack_int info,m,n,lda,ldb,nrhs;

     /* Initialization */
     m = 5;
     n = 3;
     nrhs = 2;
     lda = 5;
     ldb = 5;

     /* Print Entry Matrix */
     print_matrix_colmajor( "Entry Matrix A", m, n, *A, lda );

  return (*env)->NewStringUTF(env,hello);
}
问题是,当我尝试调用函数print_matrix_colmajor()时,它出现在lapack目录中,然后它给了我们未定义的引用问题。我想让我的CMakeList能够从我的JNI调用任何lapack函数。
是否有人可以帮助我使用CMakeLists.txt文件构建lapack模块。

您创建导入的库目标
blas
lapack
,但我在您的代码中没有看到与这些目标链接的位置。@Tsyvarev我不知道如何链接这些目标。你能给我举个例子吗。非常感谢您的帮助使用
target\u link\u libraries
命令执行与库的链接。例如,如果您想将
本机库
与lapack链接,则可以使用
目标链接库(本机库公共lapack)
@Tsyvarev我也尝试了target\u link\u libraries命令,但这给了我一个错误,即Ninja生成器不支持使用Ninja版本1.8.2的Fortran,因为缺少必需的功能。Kitware已经实现了所需的功能,但截至此版本的CMake,它们还没有集成到上游忍者中