You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译Android-Object-Detection项目遇CMake编译工具未设置错误求助

解决Android-Object-Detection编译时的CMake编译器未设置错误

问题描述

我最近在尝试编译开源项目Android-Object-Detection,折腾了好长时间都没法成功构建,每次都会触发CMake错误。我查过StackOverflow上的相关解答,但可能是自己对JNI和原生编译流程不太熟,没解决问题。我是JNI新手,对原生编译这块了解有限,以下是我遇到的错误信息:

Build command failed. Error while executing '/home/rudra/Android/Sdk/cmake/3.6.4111459/bin/cmake' with arguments {-H/home/rudra/Downloads/Projects/CVTEST/Android-Object-Detection-master/app -B/home/rudra/Downloads/Projects/CVTEST/Android-Object-Detection-master/app/.externalNativeBuild/cmake/release/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/rudra/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/rudra/Downloads/Projects/CVTEST/Android-Object-Detection-master/app/build/intermediates/cmake/release/obj/armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/rudra/Android/Sdk/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/rudra/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=21 -DCMAKE_CXX_FLAGS=-fexceptions} -- Configuring incomplete, errors occurred! (include) CMakeLists.txt Open File CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage Build command failed. Error while executing '/home/rudra/Android/Sdk/cmake/3.6.4111459/bin/cmake' with arguments {-H/home/rudra/Downloads/Projects/CVTEST/Android-Object-Detection-master/app -B/home/rudra/Downloads/Projects/CVTEST/Android-Object-Detection-master/app/.externalNativeBuild/cmake/debug/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/rudra/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/rudra/Downloads/Projects/CVTEST/Android-Object-Detection-master/app/build/intermediates/cmake/debug/obj/armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/home/rudra/Android/Sdk/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/rudra/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=21 -DCMAKE_CXX_FLAGS=-fexceptions} -- Configuring incomplete, errors occurred! (include) CMakeLists.txt Open File CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

解决方案

你遇到的核心问题是CMake找不到C/C++编译器,这大概率和工具版本不兼容、架构废弃或者缓存混乱有关,试试下面这些步骤:

  • 更新CMake和NDK到兼容版本
    你当前用的CMake 3.6版本太老了,和ndk-bundle的兼容性很差。打开Android Studio的SDK管理器,把CMake更新到3.18以上的稳定版本,同时确认NDK版本也更新到较新的稳定版(比如25.x系列),并在app模块的build.gradle里指定对应的版本:

    android {
        ndkVersion "25.1.8937393" // 替换成你安装的NDK版本
        externalNativeBuild {
            cmake {
                path "CMakeLists.txt"
                version "3.18.1" // 替换成你安装的CMake版本
            }
        }
    }
    
  • 废弃armeabi架构,改用支持的ABI
    从NDK r17开始,armeabi架构已经被官方废弃,工具链不再提供对应的编译器。修改app模块build.gradle里的abi配置:

    android {
        defaultConfig {
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }
    }
    
  • 手动指定编译器路径(如果更新后仍不行)
    打开项目的CMakeLists.txt,在文件最开头添加以下代码,手动指定NDK里的clang编译器路径(注意替换成你系统对应的路径,比如Windows是windows-x86_64,macOS是darwin-x86_64):

    set(CMAKE_C_COMPILER "${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang")
    set(CMAKE_CXX_COMPILER "${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++")
    
  • 清理缓存后重新构建
    先通过Android Studio的File -> Invalidate Caches...清理IDE缓存,然后删除项目根目录下的.externalNativeBuild和build文件夹,最后点击Sync Project with Gradle Files,再尝试重新构建。旧缓存经常会导致配置冲突。

内容的提问来源于stack exchange,提问作者Diaz diaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:15:26