美文网首页
Android Cmake教程 未完待续......

Android Cmake教程 未完待续......

作者: aimaile | 来源:发表于2019-01-26 21:22 被阅读0次

一、CMake常用变量
一般来说,我们可以用set指令显示定义一个变量,但CMake系统已经帮我们隐式预定义了一些变量,可以采用${VAR}方式来 调用这些变量,以下记录一些Android CMakeLists.txt文件中常用的变量。

PROJECT_SOURCE_DIR
当前工程的源码路径。

PROJECT_BINARY_DIR
指向工程构建目录的全路径。

CMAKE_VERSION
CMake的完整版本号;格式为major.minor.patch[.tweak[-id]]

CMAKE_CURRENT_SOURCE_DIR
调用这个变量的CMakeLists.txt所在路径

CMAKE_CURRENT_LIST_FILE
调用这个变量的CMakeLists.txt的完整路径

CMAKE_CURRENT_LIST_LINE
这个变量所在的行数

PROJECT_NAME
返回通过project指令定义的项目名称

二、调用第三方so库的CMakeLists.txt配置
下面是调用了三个so库的配置。

cmake_minimum_required(VERSION 3.4.1)

#依赖的头文件添目录,这个要写在前面
#include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp)

add_library( #库名称
             LiveDetect

             #类型 STATIC或者SHARE
             SHARED

             #文件 静态库 查看 set_target_properties
              src/main/cpp/liveDetect.cpp)

add_library( #库名称
             CwAttLivDet

             #类型 STATIC或者SHARE
             SHARED

             #文件 静态库 查看 set_target_properties
              IMPORTED )


set_target_properties(
            CwAttLivDet
            PROPERTIES IMPORTED_LOCATION
            #${Project}/app/libs/${ANDROID_ABI}/libtest-lib.so//需设置Project
            ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libCwAttLivDet.so
            #${CMAKE_SOURCE_DIR}/src/main/cpp/libCwAttLivDet.so
            #../../../../libs/${ANDROID_ABI}/libtest-lib.so
            )


add_library( #库名称
             deepnet

             #类型 STATIC或者SHARE
             SHARED

             #文件 静态库 查看 set_target_properties
             IMPORTED )


set_target_properties(
            deepnet
            PROPERTIES IMPORTED_LOCATION
            #${Project}/app/libs/${ANDROID_ABI}/libtest-lib.so//需设置Project
            ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libdeepnet.so
            #${CMAKE_SOURCE_DIR}/src/main/cpp/libdeepnet.so
            #../../../../libs/${ANDROID_ABI}/libtest-lib.so
            )


add_library( #库名称
             cwauthorize_android

             #类型 STATIC或者SHARE
             SHARED

             #文件 静态库 查看 set_target_properties
              IMPORTED )


set_target_properties(
            cwauthorize_android
            PROPERTIES IMPORTED_LOCATION
            #${Project}/app/libs/${ANDROID_ABI}/libtest-lib.so//需设置Project
            ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcwauthorize_android.so
            #${CMAKE_SOURCE_DIR}/src/main/cpp/libcwauthorize_android.so
            #../../../../libs/${ANDROID_ABI}/libtest-lib.so
            )


#指定要引用的xxxx.so的头文件目录
#set(LIBJPEG_INCLUDE_DIR src/main/cpp)
#include_directories(${LIBJPEG_INCLUDE_DIR})

find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )




target_link_libraries( #库名 与前面的对应
                       LiveDetect
                       CwAttLivDet
                       cwauthorize_android
                       deepnet

                       #文件目录
                       ${log-lib} )

三、实例

ndk.png

导入第三方so库操作

把第三方的库文件放到libs目录下面,包含上面生成的7中CPU文件
然后配置 CMakeLists.txt ,一共4步,如下:
cmake_minimum_required(VERSION 3.4.1)
#1.配置第三方so库.h头文件路径
include_directories(src/main/cpp/header)
 
#指定so库输出路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
    ${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI})
 
add_library( # Sets the name of the library.
             native-lib
 
             # Sets the library as a shared library.
             SHARED
 
             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp )
 
#2.添加第三方库
add_library(test-lib SHARED IMPORTED)
#3.添加库的路径
set_target_properties(test-lib
        PROPERTIES IMPORTED_LOCATION
        ${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI}/libtest-lib.so)
 
find_library( # Sets the name of the path variable.
              log-lib
 
              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )
 
#4.添加链接
target_link_libraries( # Specifies the target library.
                       native-lib
                       test-lib
                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

四、参考链接
https://blog.csdn.net/dengweijunkedafu/article/details/89218863?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

相关文章

  • Android Cmake教程 未完待续......

    一、CMake常用变量一般来说,我们可以用set指令显示定义一个变量,但CMake系统已经帮我们隐式预定义了一些变...

  • Android cmake使用外部动态共享库

    官方文档分享: CMake的基本用法参考Android官方文档上的CMake教程: https://develop...

  • C/C++项目开发编译

    vscode + 插件 C/C++ Cmake : cmake教程 Cmake Tools Remote Deve...

  • ios cmake

    参考cmake 官方教程[https://cmake.org/cmake/help/latest/guide/tu...

  • CMake学习小结--变量

    CMake学习小结 参考资料 CGold的Cmake教程 -- 这个教程很新: https://cgold.rea...

  • CMake官方文档翻译(1) CMake教程 Step by S

    CMake 教程 Step by Step 本教程涉及的源码可在CMake源码的Help/guide/tutori...

  • CMake官方教程

    CMake官方教程 CMake教程提供了逐步指南,涵盖了CMake可以解决的常见构建系统问题。了解示例项目中各个主...

  • Android-studio的ndk

    前言 本篇介绍Android-studio下的ndk的配置教程 正文 1.下载ndk和CMake 如果下载很慢的话...

  • CMake教程 (一)

    本文所有示例来源于CMake官方教程:https://cmake.org/cmake-tutorial/ CMak...

  • CMake配置

    CMake ​ 在android studio 2.2及以上,构建原生库的默认工具是 CMake。 ​ CMake...

网友评论

      本文标题:Android Cmake教程 未完待续......

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