androidstudio下JNI的CMakeList.txt编写教程
1、先简单介绍一下CMake
是一个跨平台的编译工具,可以用简单的语句来描述所有平台的编译过程。他能够输出各种各样的makefile或者project文件,所有的语句都写在一个叫:CMakeLists.txt的文件中。

2、android studio工程目录结构

3、先上一个完整版本的CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1)
include_directories(src/main/cpp/include/)
add_definitions(-D_LINUX -D_ANDROID)
add_library(
native-lib
SHARED
src/main/cpp/native-lib.cpp
)
add_library(othermodule SHARED IMPORTED)
set_target_properties(othermodule PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libothermodule.so)
find_library(log-lib log )
target_link_libraries(
native-lib
othermodule
${log-lib})

4、简单介绍一下基本语法
cmake_minimum_required(VERSION 3.4.1)
用于指定cmake的最小版本要求


5、用于指定头文件的目录
include_directories(src/main/cpp/include/)

6、定义jni编译宏和其它编译参数
add_definitions(-D_LINUX -D_ANDROID)

7、指定生成库的名称和类型,编译使用的c/c++文件
add_library(
native-lib
SHARED
src/main/cpp/native-lib.cpp
)

8、引用第三方库,这是第三库引用的方式
add_library(othermodule SHARED IMPORTED)
set_target_properties(othermodule PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libothermodule.so)

9、引用android系统的系统库,如log库,是打印日志用的库
find_library(log-lib log )
10、与第三库链接生成目标native-lib库
target_link_libraries(
native-lib
othermodule
${log-lib})

