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

96
aimaile
2019.01.26 21:22 字数 347

一、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} )
Android
Gupao