Android Studio中CMake编译NDK时,切换编译编译platform API--Cannot find source file:CMakeFiles/CMakeTmp/testCComp



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平台API
        externalNativeBuild {
            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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值