CMake與NDK搭配使用時,能夠配置的部分變量:html
ANDROID_PLATFORM
:指定Android的目標版本,對應$NDK/platforms/
目錄下的版本。一般狀況下是defaultConfig
中的minSdkVersion
,這樣就能確保全部大於等於minSdkVersion
的設備均可以使用編譯生成的庫。 可是也有例外,好比:當ANDROID_ABI=arm64-v8a
時,即便minSdkVersion
爲18
,可是ANDROID_PLATFORM=android-21
,由於從API21開始才支持64位庫。這裏的版本直接決定了使用$NDK/platforms
目錄下哪一個系統版本的庫和頭文件。 ANDROID_STL
:指定使用的STL庫,STL庫不是Android系統自帶的,若使用靜態庫(c++_static
),則會連接進目標庫;若使用動態庫(c++shared),Gradle會將動態庫(libc++shared.so)和目標庫一塊兒打包。詳情可參考C++ 庫支持。 ANDROID_ARM_NEON
:指定CMake是否構建支持NEON
的目標庫。API大於等於23時,默認值爲true,不然爲false。 Cmake編譯時,是經過$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin
下的交叉編譯工具進行編譯和連接,arm-linux-androideabi-4.9
表示對應abi架構和位數,例如:arm64就是aarch64-linux-android-4.9
。而連接時所依賴的系統庫,則是在$NDK/platforms/${ANDROID_PLATFORM}/${abi}/usr/lib
目錄下。linux