AndroidStudio中CMakeLists文件的常见配置
1、在安卓的JNI开发中,CMake是一个很重要的辅助工具,CMake是一个比make更高级的编译工具,在AS2.2版本及以上,CMake取代了make工具成为了默认的native库构建工具
2、CMakeLists.txt文件的一些常见命令配置
#指定cmake的最低版本号
cmake_minimum_required(VERSION 3.4.1)
#添加一个名称为native-lib的库文件
add_library( # Sets the name of the library.
#设置要添加的库文件的名称
native-lib
# Sets the library as a shared library.
#指定添加的库文件是动态库还是静态库
#STATIC:静态库 SHARED:动态库
SHARED
# Provides a relative path to your source file(s).
#指定要添加的库的源文件路径
native-lib.cpp )
#查找系统库,这里是将查找的系统库log赋值给变量log-lib
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( # Specifies the target library.
#目标库
native-lib
#将lib1 lib2 lib3链接到目标库native-lib上
#如果lib1依赖lib2 lib2又依赖于lib3,那么这三者的顺序只能是lib1 lib2 lib3而不能修改
lib1 lib2 lib3 )
#设置变量,dir_var:变量名称 src/main/cpp:变量的值
set(dir_var src/main/cpp)
#查找当前目录所有源文件,并将查找到的源文件名称列表保存到变量DIR_SRCS中
aux_source_directory(. DIR_SRCS)
#设置头文件目录路径(可以是相对路径也可以是绝对路径)
#例如src/main/cpp/include目录下是一些.h的头文件
include_directories(src/main/cpp/include)
#添加可执行文件
add_executable(<name> ${SRC_LIST})
#Android6.0版本以后添加预编译库
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -L[so所在目录]") #c库
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L[so所在目录]") #cpp库
3、cmake在app的build.gradle中的配置
android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
cppFlags ""
abiFilters 'armeabi-v7a' //指定cpu的架构
}
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt" //指定CMakeLists.txt的路径,这里表示是在app目录下
}
}
...
}
原文地址: https://blog.csdn.net/huideveloper/article/details/108529421