自定义Eclipse代码辅助

时间:2015-07-23 00:02:45

标签: c eclipse makefile

我有一个现有的c项目,即基于makefile的项目,我带入了Eclipse C / C ++(Mars Release(4.5.0))。我能够在Eclipse中成功构建,但我面临的问题是项目支持针对几种不同的体系结构,我的makefile处理链接适当的体系结构特定的头文件,但eclipse不知道它,所以我得到了很多未定义的类型。

例如,处理器特定类型:

UINTN
UINT8
UINT32
etc..

是否都在处理器特定的头文件中定义。位于:

\Include\X64
\Include\AArch64
\Include\Arm
\Include\IA32 
etc..

我知道我的目标是x64,因此我知道我想要使用的标头位于\Include\x64\目录中。但我无法弄清楚如何告诉eclipse使用其代码辅助的定义。由于所有'Include'个文件夹都在源代码中,因此它会查看所有文件夹并且无法决定要执行的操作。因此,虽然我的代码构建了关于无法解析的类型,但它到处都是红色的波浪线。

在Visual Studio中我做过Intellisense - >包括搜索路径 - >我在那里添加了\ Include \ X64文件夹,它解决了我的问题。但是我无法在Eclipse中找到相同的行为。

谢谢!

编辑:如果有人愿意/想要在真实来源上试一试,那就是UEFI EDK2来源:> git clone https://github.com/tianocore/edk2 当你在eclipse中打开它时,请查看

\MdeModulePkg\Application\HelloWorld\HelloWorld.c

这是它附带的示例应用程序,您将看到eclipse无法解析UINT32。由于默认配置为IA32,因此您需要的包含文件为'\MdePkg\Include\IA32\ProcessorBind.h'。但是尽管添加了该目录,并且该文件专门针对eclipse CDT包含目录,它仍然无法解析这些类型

EDIT2:

我已经删除了所有其他架构包含目录,所以剩下的就是x64了。这没有用。

然后我进一步在helloworld.c示例应用程序中#included <ProcessorBind.h>哪个文件包含所有缺少的定义。 Eclipse理解include,如果我右击并说'Open Declaration'它会打开x64 \ ProcessorBind.h但它仍然无法解析类型... help .. enter image description here

2 个答案:

答案 0 :(得分:1)

在项目设置下(右键单击项目并选择“属性”),导航到C / C ++ General - &gt;预处理器包括路径,宏等。从侧面选项中选择GNU C(如果您有使用这些头的任何C ++代码,请对C ++重复相同的步骤)。选择CDT User Setting Entires,然后单击右侧的Add。

enter image description here

选择包含该类型的目录,然后单击文件夹图标以浏览到正确的文件夹。然后点击OK。

enter image description here

CDT应该自动重建索引。如果它由于某种原因(有时可能有点挑剔),请右键单击您的项目并选择Index - &gt;重建。

答案 1 :(得分:0)

虽然从技术上讲,我没有原始问题的解决方案。我安装了KDevelop(仅限Linux)及其智能感知/索引,你想要它按照我想要的方式工作。起初它有一些冲突,所以它询问我是否要添加自定义包含路径。我做了,并添加了x64文件夹。然后一切按预期工作。

所以对于那些在同样的事情上苦苦挣扎的人来说,如果你在Linux上,只需切换到kdevelop。