Что CMake делает с Ninja в системе сборки Android 7?

Из полученной информации в системе сборки Android 7:

  • Go обеспечивает поддержку сборки для Soong.
  • Soong вместо использования make загружает файлы .bp/.mk и выводит файлы .ninja.
  • Ninja загружает файлы .ninja и создает исходный код.

И я также нашел на странице справки, что CMake включает Ninja генератор.

РЕДАКТИРОВАТЬ :

CMake включен в состав платформы/предварительных сборок, но не включен в манифесты Android 7

Но я снова проверил код Android, так много CMakeLists.txt и CMake вызывается в некоторых сценариях в /external.

    ./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

Итак, если Soong может генерировать файлы .ninja, какова роль CMake в системе сборки Android 7? Просто альтернативный выбор или еще не полностью замененный Soong?


person butter    schedule 13.09.2016    source источник
comment
Может CMake нет? Тот факт, что CMake может создавать файлы ninja, а Android также использует Ninja, не означает, что CMake должен быть задействован.   -  person usr1234567    schedule 13.09.2016


Ответы (1)


Начиная с версии 2.2, Android Studio на 64-битной ОС поддерживает сборку C/C++ через CMake и ndk-build через стабильную градацию.

В обоих случаях Gradle настроен так, чтобы указывать на внешнюю систему сборки. Он опрашивает внешнюю систему сборки, чтобы определить список всех исходных кодов C/C++, которые создаются в проекте, и использует этот список для заполнения проекта Studio, позволяя редактировать и отлаживать внутри Studio, продолжая использовать внешнюю систему сборки для компиляции и компоновки. исходники C/C++.

Набор поддерживаемых образцов CMake NDK здесь.

ссылка: http://tools.android.com/tech-docs/external-c-builds

См.: Сборка проекта Android NDK с помощью Cmake

person Community    schedule 14.09.2016
comment
CMake — это не то, что я считал сборщиком платформы Android, это просто для разработчиков приложений в наборе для разработки, верно? Спасибо за внимание к вопросу новичка! - person butter; 14.09.2016
comment
@butter: Да, вы можете создать проект Android NDK с помощью Cmake и создать APK. См. также: stackoverflow.com/tags/cmake/info - person ; 14.09.2016