Android Studio中CMake编译NDK时,切换编译编译platform API--Cannot find source file:CMakeFiles/CMakeTmp/testCCompiler.c
Android Studio中CMake编译NDK时报这个错误时:
CMake Error at E:/xxx/.externalNativeBuild/cmake/armDebug/x86/CMakeFiles/CMakeTmp/CMakeLists.txt:14 (add_executable):
Cannot find source file:
E:/xxx/.externalNativeBuild/cmake/armDebug/x86/CMakeFiles/CMakeTmp/testCCompiler.c
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
可考虑切换platform-xx尝试解决。可能原因是机器android版本和AS环境SDK 版本原因。
解决: 切换编译编译API :android--XX
方法一: 直接在Android Studio/Android-Studio-SDK/cmake/3.6.4111459/android.toolchain.cmake文件中修改:
if(ANDROID_PLATFORM MATCHES "^android-([0-8]|10|11)$")
set(ANDROID_PLATFORM android-9)
elseif(ANDROID_PLATFORM STREQUAL android-20)
set(ANDROID_PLATFORM android-19)
elseif(NOT ANDROID_PLATFORM)
set(ANDROID_PLATFORM android-9)
endif()
set(ANDROID_PLATFORM android-24) //修改为android-24
set(ANDROID_PLATFORM_LEVEL 24) //修改为android-24
string(REPLACE "android-" "" ANDROID_PLATFORM_LEVEL ${ANDROID_PLATFORM})
if(ANDROID_ABI MATCHES "64(-v8a)?$" AND ANDROID_PLATFORM_LEVEL LESS 21)
set(ANDROID_PLATFORM android-21)
set(ANDROID_PLATFORM_LEVEL 21)
endif()
if(NOT ANDROID_STL)
set(ANDROID_STL gnustl_static)
endif()
然后重启AS.
方法二:在build.gradle下的defaultConfig中添加如下代码:
///*** 设置PLATFORM平台APIexternalNativeBuild {
cmake {
arguments '-DANDROID_PLATFORM=android-24', //切换为android-24
'-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
}
}
由于 CMake 的命令集成在了 gradle - externalNativeBuild 中,所以在 gradle 中有2个地方配置 CMake。
参考资料:
http://blog.csdn.net/qq_29343201/article/details/52714264