美文网首页
安卓中使用CMakeLists总结:

安卓中使用CMakeLists总结:

作者: Epimenides | 来源:发表于2020-08-08 11:03 被阅读0次

    参考项目:ncnn人脸识别Demo

    CMakeLists中add-library是加载本地库,find_library是加载NDK库,target_link_libraries是关联库

    下面分别举一些上面三个例子也就是github项目中的CMakeList.txt文件中的三种命令

    • add-library加载本地库:
    # 添加一个.a静态链接库-libncnn.a
    add_library(libncnn STATIC IMPORTED)
    # 设置库的一些参数: 库名称:libncnn; 被导入库的路径: ${lib_DIR}/${ANDROID_ABI}/libncnn.a
    set_target_properties(libncnn PROPERTIES IMPORTED_LOCATION ${lib_DIR}/${ANDROID_ABI}/libncnn.a)
    
    # 添加一个.so动态链接库- libopencv_java
    add_library(libopencv_java SHARED IMPORTED)
    # 添加预编译库 libopencv_java4.so 被导入库的路径为: ${lib_DIR}/${ANDROID_ABI}/libopencv_java4.so
    set_target_properties(libopencv_java PROPERTIES IMPORTED_LOCATION ${lib_DIR}/${ANDROID_ABI}/libopencv_java4.so)
    
    # 生成一个list类型的变量存储下面的文件路径,并将该list赋值给CPP_SRCS
    file(GLOB_RECURSE CPP_SRCS
            src/main/cpp/ultra_face.h
            src/main/cpp/ultra_face.cpp
            src/main/cpp/mobile_facenet.h
            src/main/cpp/mobile_facenet.cpp
            src/main/cpp/base_util.h
            src/main/cpp/base_util.cpp
            src/main/cpp/face_jni.cpp)
    
    # 添加一个.so动态链接库 -faceLibrary
    add_library(faceLibrary SHARED ${CPP_SRCS})
    
    • find_library加载NDK库
    # 在指定目录下搜索一个库 并保存在该变量中[第一个参数]
    find_library(log-lib log android)
    find_library(jnigraphics-lib jnigraphics)
    find_library(vulkan-lib vulkan)
    

    原生的NDK都包含了那些库?

    • target_link_libraries关联库
    # 将当前的库和后边的库合并
    target_link_libraries(faceLibrary libncnn libopencv_java z android ${log-lib} ${jnigraphics-lib} ${vulkan-lib})
    

    相关文章

      网友评论

          本文标题:安卓中使用CMakeLists总结:

          本文链接:https://www.haomeiwen.com/subject/dzsfdktx.html