android cmake 打印_Android Cmake教程 未完待续......

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值