NDK代码编译的方式,ndk-build,Cmake,独立工具链分别有什么区别

NDK代码编译的方式有三种,分别是基于Make的ndk-build,CMake,以及独立工具链。它们的区别如下:

  • 基于Make的ndk-build是Android NDK r4引入的一个shell脚本,它使用Android.mk和Application.mk文件来描述编译参数和配置,如指定使用的C++标准,引用的共享库,编译的ABI等。ndk-build会调用NDK自带的编译工具,如gcc,g++,ld等,来生成静态库或动态库。ndk-build的优点是简洁高效,缺点是不够灵活,只能在Android平台上使用。
  • 基于CMake的CMake是一种跨平台的编译工具,它使用CMakeLists.txt文件来描述编译参数和配置,如指定源文件,目标库,依赖库,编译选项等。CMake不会直接编译出对象,而是根据不同的平台生成对应的Makefile或project文件,然后再调用底层的编译工具,如make,ninja,cl等,来生成静态库或动态库。CMake的优点是具有跨平台的特性,可以在多种平台上使用,缺点是语法比较复杂,需要学习一定的规则。
  • 独立工具链是一种可以在任何平台上使用的编译工具,它使用NDK提供的make-standalone-toolchain.sh脚本来生成一个独立的工具链,包括编译器,链接器,库等。独立工具链可以用来编译任何原生代码,不需要使用Android.mk或CMakeLists.txt文件,也不需要使用ndk-build或CMake命令,只需要使用普通的编译命令,如gcc,g++,ld等,来生成静态库或动态库。独立工具链的优点是最灵活,可以自定义任何编译参数和配置,缺点是最复杂,需要手动管理所有的编译细节。

你可能感兴趣的:(ndk,android)