You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android Studio未显示C++头文件Definitions.h问题求助

解决Cocos2d-x + Android Studio中Definitions.h文件不显示的问题

我来帮你排查下这个头疼的问题,结合Cocos2d-x和Android Studio的开发场景,常见的原因和解决方法如下:

  • CMakeLists.txt未正确配置头文件搜索路径
    头文件如果不在CMake默认的搜索目录里,Android Studio的索引系统是找不到它的。你需要在项目的CMakeLists.txt中添加include_directories指令,指定头文件所在的文件夹路径。举个例子,如果Definitions.hClasses/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索引会卡住。试试这几个操作:

    1. 点击顶部菜单栏的File -> Sync Project with Gradle Files,强制同步项目
    2. 如果同步没用,就清除缓存重启: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

火山引擎 最新活动