ndk+cmake编译出现xxxx.app.main | debug | armeabi-v7a Compiler exited with error code 1:
一、概述
问题现象:
在做NDK开发时,项目能正常运行。kotlin/java端不报错。ndk端(cpp)会出现找不到系统头文件的情况。如:<jni.h>文件都找不到。但是此时项目运行起来是一点问题没有。
此时的在ndk的cpp文件夹下写代码是没有智能提示的,那效率是相当的低,果断不能。
使用cmake的同步功能报错如下:
xxxx.app.main | debug | armeabi-v7a Compiler exited with error code 1: D:\ndk\android-ndk-r16\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe -xc++ --target=armv7-none-linux-androideabi --gcc-toolchain=D:/ndk/android-ndk-r16/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 --sysroot=D:/ndk/android-ndk-r16/sysroot -DJCMPlayer_EXPORTS -isystem D:/ndk/android-ndk-r16/sources/cxx-stl/llvm-libc++/include -isystem D:/ndk/android-ndk-r16/sources/android/support/include -isystem D:/ndk/android-ndk-r16/sources/cxx-stl/llvm-libc++abi/include -isystem D:/ndk/android-ndk-r16/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=23 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -mthumb -Wa, --noexecstack -Wformat -std=c++11 -frtti -fexceptions -std=c++11 -O0 -fno-limit-debug-info -fPIC E:\tony\demo\opengl\xxxx\app\src\main\cpp\CCOpenGLShader.cpp -fpch-preprocess -v -dD -E Android clang version 5.0.300080 (based on LLVM 5.0.300080) Target: armv7-none-linux-android Thread model: posix InstalledDir:
二、解决办法
问题原因:排查到最后发现是cmake的版本不对。cmake版本太低导致的。
1.原始环境如下:
as:AndroidStudio Giraffe 2022.3.1 Patch2 ndk:ndk-r16 gradle:7.2 cmake:3.10.2
2.更改后的环境
as:AndroidStudio Giraffe 2022.3.1 Patch2 ndk:ndk-r16 gradle:7.2 cmake:3.18.1 (把cmake改成了本机最新版本)
3.更细cmake环境
问题1:cmake版本过低 CMake 3.12 or higher is required. You are running version 3.10.2 问题2:使用的cmake版本没有在sdk中,下载下就行了 [CXX1300] CMake '3.18.2' was not found in SDK, PATH, or by cmake.dir property.