为最简单的项目生成的EclipseCDT构建并没有正确设置include路径



Eclipse:开普勒;CDT:8.3.0

我刚开始在一个C++项目中使用EclipseCDT。我只是使用UI将一个新的空C++类和相关联的头文件自动添加到项目中。然后我按下构建按钮。生成失败。Eclipse CDT生成的构建脚本失败,原因很简单,就是没有设置包含路径:

Building file: ../Foo.cpp
Invoking: Cross G++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Foo.d" -MT"Foo.d" -o "Foo.o" "../Foo.cpp"
../Foo.cpp:8:17: fatal error: Foo.h: No such file or directory
compilation terminated.
make: *** [Foo.o] Error 1

它在子目录Debug/中构建(这是默认的构建配置CDT设置)。如果我进入Debug/目录,只需在上面的g++命令中添加"-I./",它就可以工作了。Eclipse CDT创建的构建脚本找不到CDT为我初始化的源文件。为什么会失败?看起来真的很傻。我该如何修复它?

有几件事可能是原因:

  1. 请确保您使用的是#include "Foo.h",而不是#include <Foo.h>,引号与方括号
  2. 尝试像在#include "Foo"中那样删除.h
  3. 确保你的.h文件在src文件夹中,而不是在它之外。因为你说过你必须将-I ../添加到Debug,所以这很可能是你的问题。Foo.h文件位于项目的其余.h文件所在的文件夹之外
  4. 检查Eclipse是否正在自动创建Makefile,而不希望您生成它

这很可能是错过了一些简单的东西。我在Eclipse中经常遇到这些小问题。

编辑

从你的评论来看,#1是你问题的解决方案。如果Eclipse在为类创建.h.cpp时自动生成#include <Foo.h>而不是#include "Foo.h",那么这就是Eclipse的一个错误。

最新更新