Android 什么';CMake在安卓7构建系统中如何处理忍者?

Android 什么';CMake在安卓7构建系统中如何处理忍者?,android,go,cmake,ninja,Android,Go,Cmake,Ninja,根据我得到的信息,在Android 7构建系统中: Go为宋楚瑜提供了构建支持 宋楚瑜没有使用make,而是加载.bp/.mk文件,并输出.ninja文件 忍者加载.Ninja文件并构建源代码 我还发现CMake包含一个忍者发生器 编辑: CMake包含在中,但不包含在中 但是我再次检查了android代码,在/external下的一些脚本中调用了这么多的CMakeLists.txt和CMake ./external/clang/CMakeLists.txt:686: get_cm

根据我得到的信息,在Android 7构建系统中:

  • Go为宋楚瑜提供了构建支持
  • 宋楚瑜没有使用make,而是加载.bp/.mk文件,并输出.ninja文件
  • 忍者加载.Ninja文件并构建源代码
我还发现CMake包含一个忍者发生器

编辑:

CMake包含在中,但不包含在中

但是我再次检查了android代码,在/external下的一些脚本中调用了这么多的CMakeLists.txt和CMake

    ./external/clang/CMakeLists.txt:686:  get_cmake_property(variableNames VARIABLES)
    ./external/clang/CMakeLists.txt:711:    ${cmake_3_1_EXCLUDE_FROM_ALL}
    ./external/clang/CMakeLists.txt:725:    ${cmake_3_4_USES_TERMINAL_OPTIONS}
    ./external/clang/CMakeLists.txt:734:    ${cmake_3_4_USES_TERMINAL}
    ./external/clang/CMakeLists.txt:750:      ${cmake_3_4_USES_TERMINAL}
    ./external/clang/runtime/CMakeLists.txt:28:    set(cmake_3_4_USES_TERMINAL_OPTIONS
    ./external/clang/runtime/CMakeLists.txt:49:  get_cmake_property(variableNames VARIABLES)
    ./external/clang/runtime/CMakeLists.txt:78:    ${cmake_3_4_USES_TERMINAL_OPTIONS}
    ./external/dbus/cmake/cross-compile.sh
    ./external/compiler-rt/lib/tsan/check_cmake.sh
    ./external/opencv3/platforms/scripts/cmake_android_mips.sh
    ./external/opencv3/platforms/scripts/cmake_arm_gnueabi_softfp.sh
    ./external/opencv3/platforms/scripts/cmake_carma.sh
    ./external/opencv3/platforms/scripts/cmake_android_x86.sh
    ./external/opencv3/platforms/scripts/cmake_android_arm.sh
    ./external/opencv3/platforms/scripts/cmake_arm_gnueabi_hardfp.sh
    ./external/opencv3/platforms/scripts/cmake_android_service.sh
    ./external/opencv3/samples/android/hello-android/cmake_android.sh
此外,CMake也存在于文件夹下

    butter@server131:~/code/AOSP/N$ find ./ -name "cmake"
    ./prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot/usr/lib/cmake
    ./prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot/usr/lib32/cmake
    ./external/dbus/cmake
    ./external/llvm/cmake
    ./external/compiler-rt/cmake
    ./external/deqp/framework/delibs/cmake
    ./external/eigen/cmake
    ./external/eigen/bench/btl/cmake
    ./external/ceres-solver/cmake
    ./external/google-benchmark/cmake
    ./external/libcxx/cmake
    ./external/libcxxabi/cmake
    ./external/opencv3/platforms/ios/cmake
    ./external/opencv3/cmake
    ./external/clang/cmake
    ./external/google-breakpad/src/testing/gtest/cmake
    ./external/libunwind_llvm/cmake
    ./external/pcre/dist/cmake
那么,如果宋楚瑜能够生成.ninja文件,那么CMake在Android 7构建系统中的角色是什么?只是另一种选择,还是还没有被宋楚瑜完全取代

从2.2开始,64位操作系统上的Android Studio支持构建C/C++ 通过CMake和ndk,通过稳定梯度构建

在这两种情况下,Gradle都配置为指向外部构建 系统。它询问外部构建系统以确定列表 项目中正在构建的所有C/C++源代码的 列表以填充Studio项目,从而启用编辑和调试 在Studio内部,同时仍使用外部构建系统进行编译 并链接C/C++源代码

有一组维护的CMake NDK样本

参考:


请参阅:

可能没有CMake?仅仅因为CMake可以生成ninja文件,Andoid也使用ninja,并不意味着CMake必须参与其中。CMake不像我认为的Android平台构建器那样,它只是为开发工具包中的应用程序开发人员提供的,对吗?感谢您对这个新手问题的关注@巴特:是的,你可以用Cmake建立一个Android NDK项目并创建APK。另见: