Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在EclipseCDT中搜索整个项目的包含项 我有一个很大的C++代码库。通常,代码库的用户使用gvim编辑源代码,但我们希望开始在Eclipse中使用漂亮的IDE特性。代码库具有广泛的目录层次结构,但是源文件使用的include指令没有路径,这是因为我们在构建过程中使用了一些巫毒。当我在Eclipse中将源代码链接到我的项目时,索引器抱怨说它找不到任何头文件(因为我们没有在include中指定路径)。如果我手动将目录从工作区添加到include路径,那么一切工作都非常好,但显然手动添加数百个目录是不可行的。有没有一种简单的方法可以告诉Eclipse在项目中的任何地方查找包含文件,而不必逐个添加它们?如果没有,那么有谁能建议一个好的起点,比如扩展什么类,来编写一个插件,在创建/修改时扫描项目,并通过编程将所有目录添加到包含路径?_C++_Eclipse_Eclipse Cdt - Fatal编程技术网

在EclipseCDT中搜索整个项目的包含项 我有一个很大的C++代码库。通常,代码库的用户使用gvim编辑源代码,但我们希望开始在Eclipse中使用漂亮的IDE特性。代码库具有广泛的目录层次结构,但是源文件使用的include指令没有路径,这是因为我们在构建过程中使用了一些巫毒。当我在Eclipse中将源代码链接到我的项目时,索引器抱怨说它找不到任何头文件(因为我们没有在include中指定路径)。如果我手动将目录从工作区添加到include路径,那么一切工作都非常好,但显然手动添加数百个目录是不可行的。有没有一种简单的方法可以告诉Eclipse在项目中的任何地方查找包含文件,而不必逐个添加它们?如果没有,那么有谁能建议一个好的起点,比如扩展什么类,来编写一个插件,在创建/修改时扫描项目,并通过编程将所有目录添加到包含路径?

在EclipseCDT中搜索整个项目的包含项 我有一个很大的C++代码库。通常,代码库的用户使用gvim编辑源代码,但我们希望开始在Eclipse中使用漂亮的IDE特性。代码库具有广泛的目录层次结构,但是源文件使用的include指令没有路径,这是因为我们在构建过程中使用了一些巫毒。当我在Eclipse中将源代码链接到我的项目时,索引器抱怨说它找不到任何头文件(因为我们没有在include中指定路径)。如果我手动将目录从工作区添加到include路径,那么一切工作都非常好,但显然手动添加数百个目录是不可行的。有没有一种简单的方法可以告诉Eclipse在项目中的任何地方查找包含文件,而不必逐个添加它们?如果没有,那么有谁能建议一个好的起点,比如扩展什么类,来编写一个插件,在创建/修改时扫描项目,并通过编程将所有目录添加到包含路径?,c++,eclipse,eclipse-cdt,C++,Eclipse,Eclipse Cdt,CDT管理构建路径的方法是查看项目目录底部的.cdtbuild xml文件(在windows上可能是另一个名称…不确定) 在这方面,你应该看到类似的东西 <option id="gnu.c.compiler.option.include.paths....> <listoptionValue builtIn="false" value="&quot;${workspace_loc:/some/path}$quot;" /> <listOptionValue

CDT管理构建路径的方法是查看项目目录底部的.cdtbuild xml文件(在windows上可能是另一个名称…不确定)

在这方面,你应该看到类似的东西

<option id="gnu.c.compiler.option.include.paths....>
<listoptionValue builtIn="false" value="&quot;${workspace_loc:/some/path}$quot;" />
<listOptionValue ... />

...
</option>

...
这是您在gui中配置的所有构建路径所在的位置。使用简单的perl脚本遍历项目并生成所有listOptionValue条目,将所有目录添加到此位置应该非常容易


这显然不是理想的方法。但我很好奇,你从哪个构建系统迁移,如果它是基于make的,你应该能够让eclipse使用你的make文件。

根据你在构建过程中所做的巫毒数量,eclipse可能无法正确解析你的源文件,尤其是如果你有不同源文件的类似名称的头文件。如果您真的想充分利用Eclipse,您需要确保无论使用何种设置,都不会混淆解析器。我个人建议使用简单的布局和构建过程


至于手头的问题,一个接一个地添加目录几乎是最好的选择。

从阅读中,如果您从Eclipse中启动构建,并且如果您的构建在实际启动之前输出了
gcc
/
g++
命令,Eclipse似乎可以自动生成包含目录的列表e> gcc/
g++
。您可以通过在“项目属性”下选择“C/C++构建”类别并在对话框右侧查找“构建”命令选项来更改Eclipse启动构建的方式。

此功能已在当前的CDT开发流中实现,并将在CDT 6.0中提供,该版本将于2009年6月与Eclipse3.5一起发布

基本上,如果您有一个#include,并且头文件存在于项目中的某个地方,那么CDT将能够找到它,而无需手动设置include路径

如果您现在需要该功能,您可以下载并安装最新的CDT开发版本

Eclipse Bugzilla:
最新的CDT 6.0版本:

我刚刚测试过这个——它以最不舒服的方式工作。它正在解析构建日志,并将g++-I/some/path行中的include路径添加到“system includes”中。使用.cproject文件并自己添加它们,允许在VC中使用它的版本。自动发现不允许。