100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android 多个c文件编译成一个so AndroidStudio使用CMakeLists.txt编译多个so库

android 多个c文件编译成一个so AndroidStudio使用CMakeLists.txt编译多个so库

时间:2019-08-14 09:36:10

相关推荐

android 多个c文件编译成一个so AndroidStudio使用CMakeLists.txt编译多个so库

对于单个so库编译就不说了,AndroidStudio可以直接生成单个so库编译的模板

对于实际项目中,多用到的是好几个库,下面说一下编译多个so库的情况

TIM图片0927155108.png

一 根目录的CMakeLists.txt内容如下

cmake_minimum_required(VERSION 3.4.1)

#set(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign")

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/jniLibs/${ANDROID_ABI})

#设置头文件搜索路径(和此txt同个路径的头文件无需设置),可选

#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common)

#指定用到的系统库或者NDK库或者第三方库的搜索路径,可选。

#LINK_DIRECTORIES(/usr/local/lib)

#添加子目录,将自动找到子目录中的CMakeLists.txt

ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/src/main/cpp/one)

ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/src/main/cpp/two)

ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/src/main/cpp/three)

根目录的CMakeLists.txt文件中主要负责:

1.声明CMake最低版本

2.编译出的so库文件,存放的位置

3.各个子目录的路径

二、子目录CMakeLists.txt文件内容如下:

#继承上一层的CMakeLists.txt的变量,也可以在这里重新赋值

#C 的编译选项是 CMAKE_C_FLAGS

# 指定编译参数,可选

#SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign")

#生成动态库名称、类型、资源文件

add_library(one SHARED one.cpp)

#依赖库

find_library(log-lib log)

#

target_link_libraries(one ${log-lib})

子目录CMakeLists.txt文件中主要负责:

1.声明该路径下编译出的库名称、类型、资源文件

2.依赖的库

3.建立依赖库链接

按照以上类似,在各个子目录下创建类似文件即可

三、build.gradle中添加配置

添加externalNativeBuild配置,参考如下:

android {

compileSdkVersion 28

defaultConfig {

applicationId "com.libeibei.tv"

minSdkVersion 19

targetSdkVersion 28

versionCode 1

versionName "V1.0.1"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

externalNativeBuild {

cmake {

cppFlags ""

}

}

}

externalNativeBuild {

cmake {

path "CMakeLists.txt"

}

}

………………

}

四、最终编译出来生成三个so库文件

TIM图片0927160200.png

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。