可以在gradle中为每个ABI设置cmake参数吗?

vol*_*ond 6 android cmake gradle android-ndk

我有一个带有基于cmake的构建脚本的跨平台库.由于现在可以使用cmake对android的支持(https://developer.android.com/studio/projects/add-native-code.html),我计划将ndk-build makefile移到垃圾箱.
我已经测试过find_package(ZLIB REQUIRED) 并且运行良好,因为zlib头文件库本身可用于NDK sysroot中的所有ABI.所以,我可以为每个flavor或build类型的cmake cmdline添加任何自定义参数:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        externalNativeBuild {
            cmake {
                arguments "-DMYLIB_ENABLE_PROGUARD=ON"
            }
        }
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        externalNativeBuild {
            cmake {
                arguments "-DMYLIB_ENABLE_PROGUARD=OFF"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是能够设置CMAKE_PREFIX_PATH每个ABI以通过FindPackage查找外部静态/共享库.

一般来说,我可以find_library和cmake脚本本身include_directories一起使用${ANDROID_ABI},但是我已经有了多平台支持的工作脚本,我不想添加脏代码,因为有干净的方式(find_package + CMAKE_PREFIX_PATH).

谢谢大家的时间!

小智 5

这不是我们目前支持的.我认为它应该是可能的.我打开b.android.com/225884来跟踪它.