以前在安卓上编译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
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐