一、BUG重现
本人使用AndroidStudio2.3.3构建android项目使用CMakeLists自动构建C代码
# 获取当前目录下的所有的文件(目录)的路径并保存到 all_source 变量中
#file(GLOB all_source *.cpp )
add_library( native-lib
SHARED
${all_source} )
使用上述语法 编译CMakeLists.txt所在目录下所有的原文件构建成功后,手动创建一个新的源文件后出现如下错误,并无法编译通过(尝试过点击Sync Now,或者CleanProject,Make Project,Rebuild Project,重启AndroidStudio,甚至重启电脑,依旧提示This file is not part of the project....)。
二、分析原因
经过多次尝试后发现语法并没有问题,问题的根源是在创建新的源文件时AndroidStudio的脚本工具并没有重新标记这个新的源文件,刷新时他只检查了CmakeLists.txt文件发现文件并没有改动所以就跳过了源文件重新标记的过程导致新创建的源文件无法被添加进构建规则。
三、解决办法
- 1.将 file(GLOB all_source *.cpp )的这条语法注释掉换成aux_source_directory(. all_source) 在重新Sync Now。两条语法是同样的意思。
#查找当前目录下所有源文件并保存至all_source变量中
aux_source_directory(. all_source)
# 获取当前目录下的所有的文件(目录)的路径并保存到 all_source 变量中
#file(GLOB all_source *.cpp )
add_library( native-lib
SHARED
${all_source} )
- 2.简单暴力,打开CMakeLists.txt文件依次按下Ctrl+s保存这时会弹出Sync Now,点击重新构建即可!