利用cmake編譯安卓so庫

以前在安卓上編譯c/c++代碼,基本上都是手寫makefile,用ndk-build編譯,比較麻煩,後來研究了一下cmake編譯安卓的so庫,確實很方便,尤其是本身就有cmakelist文件的工程,省的在單獨寫makefile。
本文介紹如何用cmake編譯安卓庫,直接保存以下腳本,放到cmake文件同一目錄下執行。
首先得修改一下ndk路徑,因爲主要是利用ndk中的android.toolchain.cmake作爲交叉編譯工具鏈。注意ndk的版本不能太低,我編譯發現17的版本會有些問題,比較麻煩,ndk20的版本能順利通過。

 #!/bin/bash
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake

#!/bin/bash
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake
export NDK_HOME=/Users/xxx/Library/Android/sdk/ndk/20.1.5948944
if [[$@=~ "-d" ]];then
        echo "----------------------------cmake debug----------------------------"
cmake -DDEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \
      -DANDROID_NDK=$ANDROID_NDK_HOME \
      -DANDROID_ABI=armeabi-v7a \
      -DANDROID_TOOLCHAIN=clang \
      -DANDROID_PLATFORM=android-21 \
      -DANDROID_STL=c++_shared \
      .
else
        echo "----------------------------cmake release----------------------------"
cmake -DDEBUG=NO -DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \
      -DANDROID_NDK=$ANDROID_NDK_HOME \
      -DANDROID_ABI=armeabi-v7a \
      -DANDROID_TOOLCHAIN=clang \
      -DANDROID_PLATFORM=android-21 \
      -DANDROID_STL=c++_shared \
      .
fi
      
make
 
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake
發佈了5 篇原創文章 · 獲贊 0 · 訪問量 606
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章