CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage

5

 

1

When I build an android project which includes ndk code. I got the following error:

Build command failed. 
Error while executing process /home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {-H/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app -B/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/.externalNativeBuild/cmake/debug/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/gongzelong/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/build/intermediates/cmake/debug/obj/armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/gongzelong/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-14 -DCMAKE_CXX_FLAGS=} 
/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo 
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage 
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage 
-- Configuring incomplete, errors occurred! 
Build command failed. 
Error while executing process /home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {-H/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app -B/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/.externalNativeBuild/cmake/release/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/gongzelong/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/build/intermediates/cmake/release/obj/armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/gongzelong/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-14 -DCMAKE_CXX_FLAGS=} 
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage 
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage 
-- Configuring incomplete, errors occurred! 

I try to locate the cause.

I found the following:

gongzelong@gongzelong:~/Android/Sdk/cmake/3.6.4111459/bin$ cmake -version
CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in
/home/gongzelong/Android/Sdk/cmake/3.6.4111459/share/cmake-3.5
cmake version 3.5.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

It seems that the cmake has separately versions 3.5 and 3.6.

Could anyone point out how to fix it and build the android project successfully?

Update:

I delete the cmake and install it again in android studio sdk manager.

I still got this:

null    
Build command failed.   
Error while executing process /home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {-H/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app -B/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/.externalNativeBuild/cmake/debug/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/gongzelong/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/build/intermediates/cmake/debug/obj/armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/gongzelong/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-14 -DCMAKE_CXX_FLAGS=}    
/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo    
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage 
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage   
-- Configuring incomplete, errors occurred! 
Build command failed.   
Error while executing process /home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {-H/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app -B/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/.externalNativeBuild/cmake/release/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/gongzelong/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/media/gongzelong/TOSHIBA/Code/Code/ImageLoaderEncapsulation/ImageLoader/ImageLoaderDemo/app/build/intermediates/cmake/release/obj/armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/gongzelong/Android/Sdk/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/gongzelong/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-14 -DCMAKE_CXX_FLAGS=}  
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage 
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage   
-- Configuring incomplete, errors occurred! 

android android-ndk

shareimprove this question

edited Jun 8 '18 at 10:33

asked Jun 8 '18 at 9:08

Francis Bacon

6121718

  • did you updated the NDK? – E.Abdel Jun 8 '18 at 9:19

  • @E.Abdel I open the sdk manager in Android studio, it only has one version 3.6.4111459. What do you say about updating the ndk? – Francis Bacon Jun 8 '18 at 9:51

  • Do you have an update available for cmake? seems like an update that was borken, in my case I have /Android/Sdk/cmake/3.6.4111459/share/cmake-3.6 instead of 3.5, so if you have an update available so updated else remove it an install it again via sdk manager – E.Abdel Jun 8 '18 at 9:54

  • @E.Abdel I delete it and install it again. Yes, I also have Android/Sdk/cmake/3.6.4111459/share/cmake-3.6, but still got the same error – Francis Bacon Jun 8 '18 at 10:32

  • Please check my answer – E.Abdel Jun 8 '18 at 11:27

add a comment

3 Answers

activeoldestvotes

11

 

It seems like you are using an NDK version that is no more supporting some ABIs (armeabi in you error log), so you have to upgrade build in build.gradle (Project:....) to the latest one

classpath 'com.android.tools.build:gradle:3.1.3'

And in gradle-wraper.properties : distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

And finally, you have to add abiFilters in android block of your build.gradle(Module:app) depending of wich ABIs you need:

android {
 ....
    defaultConfig {
        externalNativeBuild {
            cmake {
                abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
            }
        }
    }
 ....
}

shareimprove this answer

answered Jun 8 '18 at 11:10

E.Abdel

1,7711922

add a comment

6

 

In my case, following changes in build.gradle (Module:app ) help me.

Original

android {
 ....
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_STL=gnustl_static' ... [other args]
            }
        }
    }
 ....
}

With my changes

android {
 android.buildToolsVersion "28.0.3"
 ....
    defaultConfig {
        externalNativeBuild {
            cmake {
                '-DANDROID_STL=c++_static' ... [other args]
            }
        }
    }
 ....
}

shareimprove this answer

answered Oct 9 '18 at 10:56

user2670032

27745

add a comment

5

 

I have the same error, and my ndk-bundle is the newest, which is ndk-r18b

CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage  CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage Configuring incomplete, errors occurred!

I fix it by use android-ndk-r14b, you can specify it in local.properties

ndk.dir=/Users/xxxx/Library/Android/sdk/android-ndk-r14b

Of course, you should download r14b first, and unzip it under the sdk folder

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CMake 是一种用于自动生成构建脚本的工具,可以帮助开发者简化构建过程。当使用 CMake 时,有时会出现 "cmake_c_compiler not set, after enablelanguage" 的错误信息。 这个错误通常是由于没有正确设置 C 编译器引起的。CMake 在构建过程中需要根据项目的语言要求来选择合适的编译器,如果没有设置编译器,就会出现这个错误。 解决这个问题的方法是通过设置正确的编译器路径来修复。可以通过在 CMakeLists.txt 文件中添加如下代码来指定编译器路径: ``` set(CMAKE_C_COMPILER gcc) # 设置 C 编译器路径为 gcc ``` 在上述代码中,使用了 gcc 作为示例,实际上应该根据你的环境和需求来设置合适的编译器路径。 另外,如果你需要使用其他语言(例如 C++),也可以通过类似的方式设置对应的编译器。比如,对于 C++ 的设置可使用以下代码: ``` set(CMAKE_CXX_COMPILER g++) # 设置 C++ 编译器路径为 g++ ``` 完成以上设置后,重新运行 CMake,在编译过程中就不会再出现 "cmake_c_compiler not set, after enablelanguage" 的错误信息了。 总之,"cmake_c_compiler not set, after enablelanguage" 错误是由于没有正确设置 C 编译器引起的,通过设置正确的编译器路径,可以解决这个问题。 ### 回答2: cmake是一个跨平台的开源构建工具,它能够协助程序开发者自动进行软件构建的工作。当使用cmake构建项目时,如果在CMakeLists.txt文件中出现以下错误信息: "cmake error: cmake_c_compiler not set, after enablelanguage cmake error: cma" 这个错误意味着在CMakeLists.txt文件中启用了C语言支持(通过enable_language(C)命令),但是没有指定C编译器。 解决这个错误的方法是在CMakeLists.txt文件中明确指定C编译器。可以使用set命令来设置C编译器,例如: set(CMAKE_C_COMPILER gcc) 在上面的例子中,我们明确指定了C编译器为gcc。你可以根据你的项目需求和系统环境选择合适的C编译器。 当然,如果你没有特别要求使用某个特定的C编译器,你也可以忽略这个错误。CMake会尝试自动选择一个默认的C编译器来构建你的项目。 总之,通过在CMakeLists.txt文件中明确指定C编译器,你可以解决"cmake error: cmake_c_compiler not set, after enablelanguage cmake error: cma"这个错误。希望这个回答能对你有所帮助。 ### 回答3: cmake error: cmake_c_compiler not set, after enablelanguage cmake error: cma 说明在使用CMake时出现了一些问题。 这个错误发生在我们在CMakeLists.txt文件中启用了某个语言(比如C语言),但在设置编译器时出现了问题。 解决这个问题的方法是在CMakeLists.txt文件中正确设置C编译器。我们可以通过在文件的开头添加以下代码来设置编译器: ``` cmake_minimum_required(VERSION 3.0) # 假设我们使用的是CMake 3.0版本或更高版本 project(MyProject) enable_language(C) # 启用C语言支持 set(CMAKE_C_COMPILER gcc) # 设置C编译器为gcc(这里以gcc为例) # ... ``` 在这个例子中,我们使用了gcc作为C编译器,你可以根据你的需要修改为适合你的编译器。你也可以使用`-DCMAKE_C_COMPILER`选项在命令行中传递编译器的路径。 当我们正确设置了C编译器后,就可以使用`cmake`命令重新生成Makefile并进行编译了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值