Android Studio未显示C++头文件Definitions.h问题求助
我来帮你排查下这个头疼的问题,结合Cocos2d-x和Android Studio的开发场景,常见的原因和解决方法如下:
CMakeLists.txt未正确配置头文件搜索路径
头文件如果不在CMake默认的搜索目录里,Android Studio的索引系统是找不到它的。你需要在项目的CMakeLists.txt中添加include_directories指令,指定头文件所在的文件夹路径。举个例子,如果Definitions.h在Classes/Utils目录下,就添加:include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../Classes/Utils)注意路径要相对于
CMakeLists.txt的位置(Cocos的proj.android中,CMakeLists一般在app模块下,所以路径要对应好)。头文件未被任何源文件引用
Android Studio的CMake项目中,只有被.cpp文件#include过的头文件才会被索引并显示在项目视图里。如果你的新C++文件里还没添加#include "Definitions.h",或者这个头文件没被其他已被索引的文件引用,AS就不会把它列出来。先检查下对应的源文件有没有正确引入这个头。Android Studio索引缓存异常
这是AS的老毛病了,有时候CMake索引会卡住。试试这几个操作:- 点击顶部菜单栏的
File -> Sync Project with Gradle Files,强制同步项目 - 如果同步没用,就清除缓存重启:
File -> Invalidate Caches...,选择Invalidate and Restart,这个能解决大部分索引不更新的问题
- 点击顶部菜单栏的
文件放置位置不符合CMake配置
如果你把Definitions.h放在了proj.android之外的目录,而CMakeLists没有关联这个目录,AS也找不到。Cocos2d-x默认会把根目录下的Classes文件夹加入编译,所以最好把自定义头文件放在Classes下的子目录里,再通过include_directories配置路径,这样更符合Cocos的项目结构。CMakeLists修改后未同步
修改完CMakeLists.txt后,AS有时候不会自动触发同步。你可以手动点击底部CMake面板里的刷新按钮,或者通过Gradle同步来让AS重新生成CMake构建缓存。
如果以上方法都不行,还可以试试手动将文件加入项目视图:右键点击app模块,选择New -> File,然后找到已存在的Definitions.h文件并添加,不过这只是临时方案,建议还是从CMake配置层面解决,避免后续同步后文件再次消失。
内容的提问来源于stack exchange,提问作者N Synchronized




