【我的Android进阶之旅】解决Android Studio 编译NDK项目出错:clang++: error: no such file or directory

一、错误描述

在编写一个NDK项目的时候,出现编译错误,如下所示:

vlog.basic-opengl | debug | armeabi-v7a Compiler exited with error code 1: 
C:\Android\SDK\ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe -xc++ --target=armv7-none-linux-androideabi19 --gcc-
toolchain=C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64 
--sysroot=C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/sysroot 
-DXtcOpenGL_EXPORTS -ID:/GitLab Source/Vlog_2022/basic-opengl/src/main/cpp/jni
 -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables 
 -fstack-protector-strong -no-canonical-prefixes -fno-addrsig 
 -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -std=c++11 
 -O0 -fno-limit-debug-info -fPIC -fpch-preprocess -v -dD -E Android (5220042 based on r346389c) 
 clang version 8.0.7 (https://android.googlesource.com/toolchain/clang b55f2d4ebfd35bf643d27dbca1bb228957008617) (https://android.googlesource.com/toolchain/llvm 
 3c393fe7a7e13b0fba4ac75a01aa683d7a5b11cd) (based on LLVM 8.0.7svn) 
 Target: armv7-none-linux-android19 Thread model: posix InstalledDir: 
 C:\Android\SDK\ndk\20.0.5594570\toolchains\llvm\prebuilt\windows-x86_64\bin Found candidate GCC installation: C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi\4.9.x Selected GCC installation: 
C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x Candidate multilib: thumb;
@mthumb Candidate multilib: armv7-a;
@march=armv7-a Candidate multilib: armv7-a/thumb;
@march=armv7-a@mthumb Candidate multilib: .; 
Selected multilib: armv7-a/thumb;@march=armv7-a@mthumb clang++: error: no such file or directory: 'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'

在这里插入图片描述
然后所有的C++代码全部爆红,如下所示:

在这里插入图片描述

二、分析错误

2.1 错误信息

找到最后一行,报错信息如下:

Selected multilib: armv7-a/thumb;@march=armv7-a@mthumb clang++: 
error: no such file or directory: 'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'

提示找不到'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'目录。

2.2 分析CmakeLists.txt

在CmakeLists.txt,我添加了include_directories配置,指定了几个目录,如下所示:

#incLude
include_directories(
        jni
        render
        sample
        sample/filter
        utils
)

在这里插入图片描述
看起来是没有任何问题的。应该不是代码的问题,继续分析!
在这里插入图片描述

2.3 分析项目路径

项目路径为:D:\GitLab Source\Vlog_2022
在这里插入图片描述

报错的目录为:D:\GitLab Source\Vlog_2022\basic-opengl\src\main\cpp\jni

2.4 分析差异

  1. 提示找不到目录地址为:'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'
  2. 报错实际的目录地址为:D:\GitLab Source\Vlog_2022\basic-opengl\src\main\cpp\jni

在这里插入图片描述
尼玛,这是什么鬼!!!

在这里插入图片描述

2.5 移动项目

看起来是Android Studio中的CMake出现了问题,导致路径识别出错。

我们将项目迁移到一个新的没有空格的路径下,试一试

  1. 原来项目路径为:D:\GitLab Source\Vlog_2022
  2. 迁移后项目路径为:D:\GitLab\Vlog_2022

没有空格了!!!
没有空格了!!!
没有空格了!!!

重要的事情说三遍!

在这里插入图片描述
然后重新编译,编译正常,如下所示:

代码正常:
在这里插入图片描述
编译正常:
在这里插入图片描述
在这里插入图片描述
尼玛,真的是天坑!!!

2.6 题外话

但是这个问题在我另外一个项目,是不存在这样的bug。

在这里插入图片描述
算了,暂时分析不出为啥新项目会抽风,暂时把新项目迁移到没有空格的目录下!

三、总结

在Window环境下,最好目录别带空格,否则会出现诡异的问题,排查很久!!!!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节卷动

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值