Eclipse可以';在子目录中找不到包含文件 导入C++的MaFaFIX项目到Eclipse后,我的项目依赖于位于 /Ur/Copy/GaseBO-2.2/GaseBe的一些库。

Eclipse可以';在子目录中找不到包含文件 导入C++的MaFaFIX项目到Eclipse后,我的项目依赖于位于 /Ur/Copy/GaseBO-2.2/GaseBe的一些库。,c++,eclipse,ubuntu,eclipse-cdt,eclipse-mars,C++,Eclipse,Ubuntu,Eclipse Cdt,Eclipse Mars,这些内容通过行#include包含。CMake在查找文件时没有问题,但Eclipse很不幸 在“我的包含”文件夹中,文件夹/usr/include/设置为包含路径。但是,它找不到包含文件 eclipse是否可以在不向include目录添加完整路径的情况下发现文件 eclipse是否可以在不向include目录添加完整路径的情况下发现文件 不,除非所讨论的包含路径是编译器的默认包含路径之一 路径,但在您的情况下并非如此 如果您希望编译器查找引用的头文件,例如 <gazebo/xx/xx.hh

这些内容通过行#include包含。CMake在查找文件时没有问题,但Eclipse很不幸

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

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

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

不,除非所讨论的包含路径是编译器的默认包含路径之一 路径,但在您的情况下并非如此

如果您希望编译器查找引用的头文件,例如

<gazebo/xx/xx.hh>
然后必须为编译器提供包含路径:

/usr/include/gazebo-2.2
在编译日志的编译器命令行中显示为:

-I/usr/include/gazebo-2.2
我还注意到,您的示例实际上是:

#include < gazebo/xx/xx.hh>
#包括
不是:

#包括
在您的示例中,前导空格将被视为 找不到文件名和标题

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

由于您使用的是Makefile项目,因此您的Makefile可能指定了相关的包含路径。Eclipse可以使用其构建输出解析器来识别这一点。一般的设置方法是:

  • 确保生成文件可以生成包含完整编译器命令调用的输出(例如,
    gcc-I/usr/include/gazebo-2.2…
    ,因为这是生成输出解析器需要看到的),或者可以配置为生成该输出
  • 确保Eclipse配置为在Project Properties->C/C++Build中正确调用makefile(根据调用目录和目标名称)
  • 确保在项目属性->C/C++常规->预处理器包含路径、宏等->提供程序选项卡中启用生成输出解析器。如有必要,根据需要调整“编译器命令模式”
  • 从Eclipse中执行构建。假设构建成功(或者至少成功到足以使构建输出包含每个源文件的编译器命令),那么构建输出解析器应该拾取命令行上定义的包含路径和宏等信息。在Project Explorer中,以这种方式获取设置的源文件将在图标上用一个小扳手装饰进行注释
  • 此时,您的include应该被解析。您可能需要重新构建索引,以使Eclipse处理新解析文件的内容
  • 为了完整起见,既然您提到了CMake,我将提到还有一些插件可以直接基于CMakeLists.txt配置项目的include路径。(我不能推荐一个特定的,因为我自己不使用CMake,但是在Eclipse市场中搜索“CMake”应该会给您一些选择。)

    #include < gazebo/xx/xx.hh>
    
    #include <gazebo/xx/xx.hh>