Android使用Cmake单独编译C/C++

3,861 阅读1分钟

使用AndroidStudio编译c/c++代码时需要新建工程,配置build.gradle,这部分网上教程有很多,不再赘述

Cmake使用

关于Cmake的使用可参考CMake 入门实战
** 基本使用步骤如下:**

  1. 新建工程目录 workdir
  2. 新建源码文件 workdir/test.cpp
  3. 新建CMakelList文件 workdir/CMakeList.txt
  4. 新建构建目录 workdir/build(因为构建过程会产生很多临时文件,建议在build文件中构建)
  5. cd到workdir/build 目录,运行命令 "cmake .." ,这一过程有错误大部分是CMakeList配置问题
  6. 在workdir/build 目录,运行命令 “make"

Android Cmake

Android Cmake 使用是需要配置一系列的参数,写成脚本方便编译:build.sh

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

ANDROID_NDK_HOME="/home/fengshuo/android-ndk-r16b"  # 配置自己NDK的路径

if [[ "$@" =~ "-d" ]];then
        echo "----------------------------cmake debug----------------------------"
cmake -DDEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
      -DANDROID_NDK=$ANDROID_NDK_HOME \
      -DANDROID_ABI=arm64-v8a \
      -DANDROID_TOOLCHAIN=clang \
      -DANDROID_PLATFORM=android-26 \
      -DANDROID_STL=c++_static \
	  ..
else
        echo "----------------------------cmake release----------------------------"
cmake -DDEBUG=NO -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \
      -DANDROID_NDK=${ANDROID_NDK_HOME} \
      -DANDROID_ABI=arm64-v8a \
      -DANDROID_TOOLCHAIN=clang \
      -DANDROID_PLATFORM=android-26 \
      -DANDROID_STL=c++_static \
	  ..
fi

make

rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake

** 基本使用步骤:**

  1. 新建工程目录 workdir
  2. 新建源码文件 workdir/test.cpp
  3. 新建CMakelList文件 workdir/CMakeList.txt
  4. 新建构建目录 workdir/build(因为构建过程会产生很多临时文件,建议在build文件中构建)
  5. 将build.sh脚本放在workdir/build目录下
  6. cd到workdir/build 目录,运行命令 "bash build.sh"

这样就可以不用配置build.gradle或者不用AndroidStudio,直接编译c/c++库了