美文网首页
安卓中使用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