Eclipse无法在子目录中找到包含文件

时间:2016-03-03 09:36:03

标签: c++ eclipse ubuntu eclipse-cdt eclipse-mars

将c ++ Makefile项目导入Eclipse后,我的项目依赖于位于 /usr/include/gazebo-2.2/gazebo 中的一些库。

这些包含在 #include<行中。凉亭/ XX / xx.hh> 即可。 CMake没有找到文件的问题,Eclipse不幸的是......

在我的include文件夹中,文件夹 / usr / include / 被设置为包含路径。但是它无法找到包含文件。

eclipse是否有可能发现文件没有添加包含目录的完整路径?

2 个答案:

答案 0 :(得分:1)

  

eclipse是否可以在不添加包含目录的完整路径的情况下发现文件?

不,除非相关的包含路径是编译器的默认包含之一 路径,在你的情况下不是这样。

如果您希望编译器找到例如

所引用的头文件
<gazebo/xx/xx.hh>

所需文件为:

/usr/include/gazebo-2.2/gazebo/xx/xx.h

然后必须为编译器提供包含路径:

/usr/include/gazebo-2.2

应该出现在构建日志中的编译器命令行中:

-I/usr/include/gazebo-2.2

我还注意到你的例子实际上是:

#include < gazebo/xx/xx.hh>

#include <gazebo/xx/xx.hh>

在您的示例中,前导空格将被视为其中的一部分 找不到文件名和标题。

答案 1 :(得分:1)

  

eclipse是否可以在不添加包含目录的完整路径的情况下发现文件?

由于您正在使用Makefile项目,因此可能您的makefile指定了相关的包含路径。 Eclipse可以使用其Build Output Parser来解决这个问题。设置它的一般方法是:

  1. 确保您的makefile可以生成包含完整编译器命令调用的输出(例如gcc -I /usr/include/gazebo-2.2 ... - 因为这是构建输出解析器需要查看的内容),或者可以配置为生成该输出。
  2. 确保Eclipse配置为在Project Properties中正确调用makefile(就调用目录和目标名称而言) - &gt; C / C ++ Build。
  3. 确保在项目属性中启用了构建输出解析器 - &gt; C / C ++一般 - &gt;预处理器包括路径,宏等 - &gt;提供商标签。如有必要,请根据需要调整“编译器命令模式”。
  4. 从Eclipse中执行构建。假设您的构建成功(或者至少成功地使构建输出包含每个源文件的编译器命令),构建输出解析器应该获取诸如命令行上定义的包含路径和宏之类的信息。在Project Explorer中,以这种方式拾取设置的源文件将使用图标上的小扳手装饰进行注释。
  5. 此时,您的包含应该得到解决。您可能需要重新构建索引以使Eclipse处理新解析文件的内容。
  6. 为了完整性,既然你提到了CMake,我会提到还有一些插件可以直接根据CMakeLists.txt配置项目的包含路径。 (我不能推荐一个特定的,因为我自己不使用CMake,但在Eclipse Marketplace中搜索“CMake”应该会给你几个选项。)