Проблема с «Ошибка CMake: CMAKE_C_COMPILER не установлен», но не может обновить среду - PullRequest
0 голосов
/ 26 июня 2018

Я знаю, что подобные вопросы задавались, но ни один из них точно не соответствует моей проблеме.

Я работаю над проектом для Android с использованием Android Studio.Я добавляю библиотеку C ++ в существующий проект.

Вот моя проблема: Когда я пытаюсь скомпилировать, я получаю это сообщение об ошибке:

Build command failed.


Error while executing process /home/v/opt/cmake/3.6.4111459/bin/cmake with arguments {-H/home/v/proj/code/android/cppmanager -B/home/v/proj/code/android/tooltipgenerator/.externalNativeBuild/cmake/release/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/v/opt/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/android/tooltipgenerator/intermediates/cmake/release/obj/armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/v/opt/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/v/opt/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-16}


 (include)   CMakeLists.txt 
Open File


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage


CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage


-- Configuring incomplete, errors occurred!

Когда я нажимаю «Открыть файл»"он открывает ndk-bundle/build/cmake/android.toolchain.cmake в строке 312.

# ABI.
set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI})
if(ANDROID_ABI STREQUAL armeabi-v7a)
  set(ANDROID_SYSROOT_ABI arm)
  set(ANDROID_TOOLCHAIN_NAME arm-linux-androideabi)
  set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_TOOLCHAIN_NAME})
  set(ANDROID_HEADER_TRIPLE arm-linux-androideabi)
  set(CMAKE_SYSTEM_PROCESSOR armv7-a)
  set(ANDROID_LLVM_TRIPLE armv7-none-linux-androideabi)
elseif(ANDROID_ABI STREQUAL arm64-v8a)
  set(ANDROID_SYSROOT_ABI arm64)
  set(CMAKE_SYSTEM_PROCESSOR aarch64)
  set(ANDROID_TOOLCHAIN_NAME aarch64-linux-android)
  set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_TOOLCHAIN_NAME})
  set(ANDROID_LLVM_TRIPLE aarch64-none-linux-android)
  set(ANDROID_HEADER_TRIPLE aarch64-linux-android)
elseif(ANDROID_ABI STREQUAL x86)
  set(ANDROID_SYSROOT_ABI x86)
  set(CMAKE_SYSTEM_PROCESSOR i686)
  set(ANDROID_TOOLCHAIN_NAME i686-linux-android)
  set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_ABI})
  set(ANDROID_LLVM_TRIPLE i686-none-linux-android)
  set(ANDROID_HEADER_TRIPLE i686-linux-android)
elseif(ANDROID_ABI STREQUAL x86_64)
  set(ANDROID_SYSROOT_ABI x86_64)
  set(CMAKE_SYSTEM_PROCESSOR x86_64)
  set(ANDROID_TOOLCHAIN_NAME x86_64-linux-android)
  set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_ABI})
  set(ANDROID_LLVM_TRIPLE x86_64-none-linux-android)
  set(ANDROID_HEADER_TRIPLE x86_64-linux-android)
else()
  set(ANDROID_ABI_ERROR "")
  if(ANDROID_ABI STREQUAL armeabi)
    set(ANDROID_ABI_ERROR " (armeabi is no longer supported. Use armeabi-v7a.)")
  elseif(ANDROID_ABI MATCHES "^(mips|mips64)$")
    set(ANDROID_ABI_ERROR " (MIPS and MIPS64 are no longer supported.)")
  endif() // line 312
  message(FATAL_ERROR "Invalid Android ABI: ${ANDROID_ABI}.${ANDROID_ABI_ERROR}")
endif()

Другие вопросы / ответы, такие как Этот предлагает обновить Gradle.Я также нашел предложения обновить SDK, NDK ... что кажется хорошей идеей, за исключением того, что это сломало бы мой существующий проект.

Я использую Android Studio 3.1.3 и Gradle 2.3.3

Вот выдержка из моего основного build.gradle

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"

    defaultConfig {
        applicationId "info.proj"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 82
        versionName "b-1.5.2"
        multiDexEnabled = true

        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
}

Можно ли как-нибудь решить эту проблему без обновления среды сборки?

Я уже немного заплатил с помощью abiFilters, но безуспешно ... но, может быть, я просто ошибся?

Я также уже пытался обновить gradle, но это ничего не исправилои вместо этого сломал остальную часть проекта.

Я уже давно ломаю голову, поэтому любое предложение будет оценено.спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...