我有一个跨平台库,带有基于CMake的构建脚本。由于现在CMake支持Android(https://developer.android.com/studio/projects/add-native-code.html),因此我计划将ndk-build makefiles删除。
我已经测试过
我的问题在于无法按ABI设置
通常,我可以在cmake脚本中使用
感谢大家花费时间!
我已经测试过
find_package(ZLIB REQUIRED)
并且它很好用,因为zlib头文件和库可用于NDK sysroot中的所有ABI。
所以,我可以根据口味或构建类型向CMake命令行添加任何自定义参数: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)。感谢大家花费时间!