CMake與NDK搭配使用時,,可以配置的部分變量:
ANDROID_PLATFORM :指定Android的目標(biāo)版本,對應(yīng)$NDK/platforms/ 目錄下的版本,。通常情況下是defaultConfig 中的minSdkVersion ,,這樣就能確保所有大于等于minSdkVersion 的設(shè)備都可以使用編譯生成的庫。 但是也有例外,,比如:當(dāng)ANDROID_ABI=arm64-v8a 時,,即使minSdkVersion 為18 ,但是ANDROID_PLATFORM=android-21 ,,因?yàn)閺腁PI21開始才支持64位庫,。這里的版本直接決定了使用$NDK/platforms 目錄下哪個系統(tǒng)版本的庫和頭文件。
ANDROID_STL :指定使用的STL庫,,STL庫不是Android系統(tǒng)自帶的,,若使用靜態(tài)庫(c++_static ),則會鏈接進(jìn)目標(biāo)庫,;若使用動態(tài)庫(c++_shared),,Gradle會將動態(tài)庫(libc++_shared.so)和目標(biāo)庫一起打包。詳情可參考C++ 庫支持,。
ANDROID_ARM_NEON :指定CMake是否構(gòu)建支持NEON 的目標(biāo)庫,。API大于等于23時,默認(rèn)值為true,,否則為false,。
Cmake編譯時,是通過$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin 下的交叉編譯工具進(jìn)行編譯和鏈接,arm-linux-androideabi-4.9 表示對應(yīng)abi架構(gòu)和位數(shù),,例如:arm64就是aarch64-linux-android-4.9 ,。
而鏈接時所依賴的系統(tǒng)庫,則是在$NDK/platforms/${ANDROID_PLATFORM}/${abi}/usr/lib 目錄下,。
|