与“ CMake错误:未设置CMAKE_C_COMPILER”有关,但无法更新环境

时间:2018-06-26 07:47:46

标签: android cmake android-ndk

我知道有人问过类似的问题,但没有一个完全适合我的问题。

我正在使用Android Studio开发一个android项目。我正在向现有项目添加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()

其他问题/答案(如this one)建议更新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,但是它没有解决任何问题,反而破坏了项目的其余部分。

我已经花了很长时间思考,所以任何建议都将不胜感激。谢谢。

0 个答案:

没有答案