自定义 Eclipse 代码辅助

标签 c eclipse makefile

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

例如处理器或特定类型:

UINTN
UINT8
UINT32
etc..

全部在处理器特定的头文件中定义。位于:

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

我知道我的目标是 x64,因此我知道我想要使用的 header 位于 \Include\x64\ 中目录。但我不知道如何告诉 Eclipse 使用其代码辅助的定义。正如所有的'Include'文件夹位于源中,它看到所有文件夹并且无法决定要做什么。因此,当我的代码构建时,它到处都有关于无法解析的类型的红色波浪线。

在 Visual Studio 中,我完成了 Intellisense -> Include Search Path -> 我在那里添加了\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 包含目录中,但它仍然无法解析这些类型

编辑2:

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

然后我更进一步,在 helloworld.c 示例应用程序中我 #included <ProcessorBind.h>这是包含所有缺失定义的文件。 Eclipse 理解包含,如果我右键单击并说“打开声明”,它会打开 x64\ProcessorBind.h 但它仍然无法解析类型...帮助.. enter image description here

最佳答案

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

enter image description here

选择包含目录作为类型,然后单击文件夹图标浏览到正确的文件夹。然后点击“确定”。

enter image description here

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

关于自定义 Eclipse 代码辅助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31576024/

相关文章:

c - '.' or ' ->'C 结构体访问器

eclipse - Jaxb 与 eclipse 自定义绑定(bind)

C makefile 和头文件混淆

c++ - 如何在 Eclipse 中使用外部 makefile

c++ - C++ 项目的 ECLIPSE makefile -- 源目录

c - 返回字符串的函数的意外输出

c - * 地址(在 printf 中找到)在汇编中是什么意思?

c - 为什么这个链表初始化不起作用?

java - 使用 Intent 来启用 GPS 并不总是能正常工作。我该如何修复

java - 子剪辑:无法生成 DH key 对