cmake指令详解

  • 需求: 编译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共享库。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容