【发布时间】:2021-11-20 07:35:52
【问题描述】:
在最近一次升级(仅 SSD 容量变化)之后,Eclipse CDT Indexer 一直给我带来困难。我的项目文件夹结构如下图。
LinEmLibrary
└─ test
├─ TestNumParam.cpp
├─ TestNumParam.h
├─ TestPMS.cpp
├─ TestPMS.h
├─ TestSerial.cpp
├─ TestSerial.h
├─ TestWindow.cpp
└─ TestWindow.h
TestWindow.h 具有实现顶级窗口的类,其他三个由 CTestWindow 类实例化。
升级后(直到一切运行良好),Codan(代码分析)开始用红色突出显示我所有的类实例(CTestNUmParam、CTestPMS 和 CTestSerial)的声明 Type X 无法解析。但是,我能够执行代码完成 (CTRL+SPACE) 并解析该类的所有成员,尽管这需要很长的时间。 代码正确构建和执行。
我试过了
- 重建索引
- 增加了索引器缓存限制(窗口 > 首选项 > C/C++ > 索引器 - 缓存限制),
- 相对于最大堆大小的限制:75%
- 绝对限制:1024 MB
- 将
eclipse.ini中的初始和最大堆大小设置为- Xms2048m
- Xmx4096m
- 在 Project Settings > C/C++ General > Paths and Symbols 中添加此文件夹的绝对路径,甚至使用 而不是 "" 包含我的标题
- 创建一个新项目并将文件手动复制到新项目中
- 导出项目并在另一台具有相同构建工具的计算机中打开
但在所有情况下,结果都是一样的。
当我为 TestWIndow.h 创建解析日志时(右键单击项目资源管理器中的头文件,Index > Create Parser Log File)我得到以下输出(删除了前约 12,000 行) .
Unresolved includes (from headers in index):
file:/home/mohith/eclipse_workspace/LinEmLibrary/test/TestNumParam.h is not indexed
file:/home/mohith/eclipse_workspace/LinEmLibrary/test/TestPMS.h is not indexed
file:/home/mohith/eclipse_workspace/LinEmLibrary/test/TestSerial.h is not indexed
Unresolved names:
Attempt to use symbol failed: CTestNumParam in file /home/mohith/eclipse_workspace/LinEmLibrary/test/TestWindow.h:76
Attempt to use symbol failed: CTestPMS in file /home/mohith/eclipse_workspace/LinEmLibrary/test/TestWindow.h:77
Attempt to use symbol failed: CTestSerial in file /home/mohith/eclipse_workspace/LinEmLibrary/test/TestWindow.h:78
A template id provides illegal arguments for the instantiation: map in file /home/mohith/eclipse_workspace/LinEmLibrary/test/TestWindow.h:80
Attempt to use symbol failed: EGridType in file /home/mohith/eclipse_workspace/LinEmLibrary/test/TestWindow.h:80
现在可以从中理解语义突出显示的原因,但是为什么索引器不包括我自己的头文件让我一无所知。
如果有人能提供一些启示,那将是一个很大的帮助。
我的系统信息
Eclipse
Version: 2021-09 (4.21.0)
Build id: 20210910-1417
CDT: 10.4.0.202109080104
OS Ubuntu 20.04 x86-64
RAM: 16 GiB
CPU: Intel® Core™ i5-8265U CPU @ 1.60GHz
【问题讨论】:
标签: c++ eclipse eclipse-cdt