Eclipse CDT,如何让它不搜索系统 headers?

Eclipse CDT, how to make it NOT search for system headers?

我正在使用 Ubuntu 16.04

上的 Eclipse Luna 将在 linux 上编译的 C 项目移植到 arm 平台

当我在 Makefile 中从 CC=gcc 切换到 CC=arm-none-eabi 时,我丢失了很多 headers 没关系,这就是移植工作的目的。

令我困扰的是,当我在符号上 CTRL-click 时,Eclipse 不会打开 arm 工具链的相应文件。例如,如果我在 <time.h> 上 CTRL-click 它不会打开:

/media/BUILDS/arm_gcc493/arm-none-eabi/include/time.h

但它总是恢复到其 linux 系统对应物,在这种情况下

/usr/include/i386-linux-gnu/time.h

因为那是 gcc 会寻找的地方,但我正在用 arm-none-eabi-gcc 编译!

我不希望 Eclipse 这样做,因为调试真的很混乱。如果我实际尝试编译的 header/source 有问题,我希望 Eclipse 打开该文件而不是默认系统文件。我摆弄了 Project Properties 和 Eclipse Preferences,但没有成功。

更糟糕的是,每当包含 <sys/socket.h> 时,我都会收到错误消息,因为 arm 工具链没有 socket.h,但如果我在上面 CTRL-click,Eclipse 会将我带到 /usr/include/i386-linux-gnu/sys/socket.h

我不想要那个,如果编译所需的 header 不存在,它就是不存在。我不想让 Eclipse 显示其他内容,我该怎么做?

项目是在 C/C++

下导入到工作区 "Existing Code as Makefile Project" 中创建的

非常感谢

编辑:

我做了正确的事情,从头开始为 Cross ARM GCC 工具链创建一个项目(使用正确的 plug-in)。我的错误是创建了一个 "Linux GCC" 项目并假装 Eclipse 理解我试图通过启动不同的 "make" 命令来实现的目标。但是,如果您无法从头开始,可接受的解决方案会指导您如何手动修复该情况。

要解决这种情况,您需要更新 Preprocessor Include Paths, Macros, etc. 设置以使用您的 custom-prefix GCC。

要进行更改:

  1. 打开项目属性(Right-click 在项目上并选择 Properties
  2. C/C++ General -> Preprocessor Include Paths, Macros, etc.中,选择提供商 选项卡
  3. Select CDT GCC Built-in 编译器设置
  4. 取消选中使用项目之间共享的全局提供程序
  5. ${COMMAND}替换为arm-none-eabi-gccarm-none-eabi-g++

或者,您也可以在工作区级别编辑相同的设置以影响工作区中的所有项目。转到 Window -> 首选项 -> C/C++ - > Build -> Settings -> Discovery 选项卡。

以下是一些可能有用的屏幕截图。

之前:

项目属性:

之后: