【发布时间】:2017-03-02 09:29:48
【问题描述】:
我有一个基于 cmake 的构建脚本的跨平台库。由于现在可以使用对 android 的 cmake 支持 (https://developer.android.com/studio/projects/add-native-code.html),我计划将 ndk-build makefile 移到垃圾箱。
我已经测试过find_package(ZLIB REQUIRED)
它运行良好,因为 zlib 头文件和库本身可用于 NDK sysroot 中的所有 ABI。
因此,我可以根据风格或构建类型向 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"
}
}
}
}
我的问题是能够为每个 ABI 设置 CMAKE_PREFIX_PATH 以通过 FindPackage 查找外部静态/共享库。
一般来说,我可以在cmake脚本本身中使用find_library和include_directories与${ANDROID_ABI}一起使用,但是我已经有支持多平台的工作脚本,我不想添加脏代码,因为有干净的方法(find_package + CMAKE_PREFIX_PATH)。
感谢大家的宝贵时间!
【问题讨论】:
标签: android gradle android-ndk cmake