android studio 下的cmake使用

    xiaoxiao2021-03-26  8

    一种java调用c++的方式是使用javah生成.class文件,ndk-build生成.so文件(ubuntu操作系统下),会生成一个动态库。另一种方式是用cmake下的CMakeLists.txt.

    写一个CMakeLists.txt文件如下:

    #CMAKELISTS_DEMO cmake_minimum_required(VERSION 3.4.1) include_directories(../../../../Include) link_directories(../../../../lib) add_library( native-lib SHARED native.cpp) #find_library( log-lib log ) #target_link_libraries( native-lib ${log-lib} dl android stdc++)

    以上是一个基本的CMakeLists.txt文件。第一行是cmake版本号,第二行include_directories是编译文件的依赖头文件,第三行link_directories是编译文件所依赖的库文件。第四行

    add_library是所编译的动态库。这个CMakeLists.txt文件放在src/main/cpp下,与java目录相平行。 在app的目录下有个叫build.gradle的文件在该文件里面添加cmake的编译项,如下所示: apply plugin: 'com.android.application' android { compileSdkVersion 15 buildToolsVersion '25' defaultConfig { applicationId "com.example.player" minSdkVersion 15 targetSdkVersion 15 externalNativeBuild { cmake { targets 'native-lib' abiFilters 'armeabi-v7a' cppFlags "-frtti -fexceptions -D__STDC_FORMAT_MACROS -std=c++11" } } } sourceSets{ main{ jniLibs.srcDirs = ['libs'] } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } } } dependencies { compile 'com.android.support:support-v4:18.0.0' } 主要在该文件里面需要添加的是externalNativeBuild,cmake的编译目录。

    转载请注明原文地址: https://ju.6miu.com/read-600291.html

    最新回复(0)