开发环境搭建Android开发常见小问题列表

AndroidStudio使用CMakeLists.txt编译多

2018-09-27  本文已影响129人  跟我去北方吧

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

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


TIM图片20180927155108.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图片20180927160200.png
上一篇下一篇

猜你喜欢

热点阅读