首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake在安卓7构建系统中用忍者做什么?

CMake在安卓7构建系统中用忍者做什么?
EN

Stack Overflow用户
提问于 2016-09-13 10:02:33
回答 1查看 3.1K关注 0票数 1

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

  • Go为宋楚瑜提供了构建支持。
  • Soong不使用make,而是加载..bp/..mk文件,并输出.ninja文件。
  • 忍者加载.ninja文件并构建源代码。

我还在帮助页中发现CMake包括一个忍者发生器。

编辑:

CMake包含在平台/预建中,但不包括在Android 7清单中。

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

代码语言:javascript
复制
    ./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存在于文件夹下

代码语言:javascript
复制
    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在安卓7构建系统中扮演的角色是什么?只是另一种选择,还是没有完全被宋楚瑜所取代?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 08:34:24

从2.2开始,Android在64位操作系统上,支持通过CMake和ndk构建C/C++ -通过稳定的等级构建。 在这两种情况下,Gradle被配置为指向外部构建系统。它询问外部构建系统,以确定正在项目中构建的所有C/C++源的列表,并使用此列表填充Studio项目,从而允许在Studio中编辑和调试,同时仍然使用外部构建系统编译和链接C/C++源。 有一组维护的CMake NDK示例这里

参考文献:http://tools.android.com/tech-docs/external-c-builds

请参阅:用Cmake构建Android项目

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39467278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档