NDK Cmake

CMake與NDK搭配使用時,能夠配置的部分變量:html

  1. ANDROID_PLATFORM:指定Android的目標版本,對應$NDK/platforms/目錄下的版本。一般狀況下是defaultConfig中的minSdkVersion,這樣就能確保全部大於等於minSdkVersion的設備均可以使用編譯生成的庫。 可是也有例外,好比:當ANDROID_ABI=arm64-v8a時,即便minSdkVersion18,可是ANDROID_PLATFORM=android-21,由於從API21開始才支持64位庫。這裏的版本直接決定了使用$NDK/platforms目錄下哪一個系統版本的庫和頭文件。
  2. ANDROID_STL:指定使用的STL庫,STL庫不是Android系統自帶的,若使用靜態庫(c++_static),則會連接進目標庫;若使用動態庫(c++shared),Gradle會將動態庫(libc++shared.so)和目標庫一塊兒打包。詳情可參考C++ 庫支持
  3. 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

相關文章
相關標籤/搜索