目標是使用 android ndk 的工具鏈編譯出 android armeabi-v7a 可用的 protobuf 庫。android
以上,準備完成。git
選擇一個你喜歡的位置,打開cmd
,執行下述命令。github
mkdir build cd build cmake -G "MinGW Makefiles" \ -DCMAKE_TOOLCHAIN_FILE=<Your NDK PATH>/build/cmake/android.toolchain.cmake \ -DCMAKE_MAKE_PROGRAM=<Your NDK PATH>/prebuilt/windows-x86_64/bin/make.exe \ -Dprotobuf_BUILD_TESTS=OFF \ <Protobuf source PATH>/cmake
幾個關鍵參數略做解釋。windows
CMAKE_TOOLCHAIN_FILE
,這個變量指定了 cmake 使用的 toolchain 腳本,toolchain腳本會幫助配置交叉編譯使用的頭文件/庫文件路徑,配置編譯器/連接器等一系列工具。bash
CMAKE_MAKE_PROGRAM
,這個變量指定了cmake使用的make程序,若是系統的PATH
中沒有 make.exe
的話(一般也不會有,除非安裝了 MinGW 而且配置了 PATH
環境變量),就須要指定使用的 make.exe
程序。這裏使用了 ndk 自帶的 prebuilt 版 make.exe
。工具
protobuf_BUILD_TESTS
,不要編譯測試用例,這一選項默認啓用,但在交叉編譯時會致使奇怪的問題。測試
-G "MinGW Makefiles"
,指定 cmake 生成 MinGW Makefile
,即通常所說的 Makefile
。ui
cmake --build . --target libprotobuf cmake --build . --target libprotobuf-lite
分別編譯libprotobuf
和libprotobuf-lite
兩個庫,這兩個庫就是咱們將會用到的 protobuf
靜態庫了。google