- 需求: 编译ncnn模型框架和opencv图像处理框架,生成动态库Name(lenovoncnn.so)
project(lenovoncnn)
cmake_minimum_required(VERSION 3.10)
set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.5.1-android/sdk/native/jni)
find_package(OpenCV REQUIRED core imgproc highgui features2d)
set(ncnn_DIR ${CMAKE_SOURCE_DIR}/ncnn-20231027-android-vulkan/${ANDROID_ABI}/lib/cmake/ncnn)
find_package(ncnn REQUIRED)
add_library(lenovoncnn SHARED mtcnn.cpp mtcnn_jni.cpp)
target_link_libraries(lenovoncnn ncnn ${OpenCV_LIBS})
-
cmake_minimum_required(VERSION 3.10):这行指定了CMake的最低版本要求,确保了项目的构建至少需要CMake 3.10版本。
-
set(OpenCV_DIR ...):设置了OpenCV库的目录,这个目录包含了OpenCV的CMake配置文件。${CMAKE_SOURCE_DIR}是一个CMake变量,它指向项目的根目录。
-
find_package(OpenCV REQUIRED core imgproc highgui features2d):这行指令告诉CMake去查找并设置OpenCV库,并且指定了需要的组件:core, imgproc, highgui, features2d。
-
set(ncnn_DIR ...):同样,这里设置了ncnn库的目录,ncnn是一个高性能的神经网络前向计算框架。
-
find_package(ncnn REQUIRED):这行指令告诉CMake去查找并设置ncnn库。
-
add_library(lenovoncnn SHARED mtcnn.cpp mtcnn_jni.cpp):这行指令添加了一个共享库目标lenovoncnn,它将由mtcnn.cpp和mtcnn_jni.cpp这两个源文件编译而成。
-
target_link_libraries(lenovoncnn ncnn ${OpenCV_LIBS}):这行指令将ncnn库和OpenCV库链接到lenovoncnn共享库。
网友评论