使用CMake命令編譯Android平臺下的包

agoodcoolman發表於2020-11-12

由於Android Studio封裝了一些編譯的細節,只知道結果但是不知道內部具體做了什麼樣的操作,所有想具體學習一下

#前言

Android Studio在2.2的版本中引入了Cmake編譯,具體的Cmake編譯與ndk-build的一些區別可以在網路上搜尋

以下是簡易編譯指令碼 每行後要加 \符號連結,不然會commond not found 問題

cmake -H./ -B./build
-DANDROID_ABI=arm64-v8a
-DANDROID_PLATFORM=android-16
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=./build
-DCMAKE_BUILD_TYPE=Debug
-DANDROID_NDK=/Users/jinmingkai/Library/Android/sdk/ndk/21.3.6528147
-DCMAKE_CXX_FLAGS=
-DCMAKE_SYSTEM_NAME=Android
-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
-DCMAKE_SYSTEM_VERSION=16
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DCMAKE_ANDROID_NDK=/Users/jinmingkai/Library/Android/sdk/ndk/21.3.6528147
-DCMAKE_TOOLCHAIN_FILE=/Users/jinmingkai/Library/Android/sdk/ndk/21.3.6528147/build/cmake/android.toolchain.cmake
-G Ninja
-DCMAKE_MAKE_PROGRAM=/Users/jinmingkai/Library/Android/sdk/cmake/3.10.2.4988404/bin/ninja \

命令的參考部落格1
參考部落格2
註釋:-H SetHomeDirectory 的意思,即sets the source directory for the project

-B 表示sets the binary directory 為 build 目錄(若目錄不存在,會自動建立)
-G 表示制定makefile生成工具
CMake_TOOLCHAINE_FILE 制定Android編譯鏈

編譯完後會在build資料夾生成build.ninja的檔案,執行ninja命令,編譯完就結束了。
其實ninja執行檔案需要加到系統環境中,ninja在/Users/jinmingkai/Library/Android/sdk/cmake/3.10.2.4988404/bin/ninja下

相關文章