2008-11-21 73 views
37

我有一个使用makefile构建的C项目,Eclipse经常警告“无效的项目路径:重复的路径条目”,但我无法弄清楚它到底希望我做什么。我想禁用此警告并继续我的生活。Eclipse CDT无效的项目路径

我的应用程序编译和运行良好,没有一个警告,除了这一个。作为一名认真的开发人员,我热衷于解决这个问题,所以我只有一个干净的构建可以带来温暖的模糊。

+1

如果您使用的是Eclipse 3.7/CDT 8,请查看Kenneth Evans的答案。我还没有测试过,但它看起来不错,如果它适合你,请留下评论。 – 2012-06-05 19:16:58

+0

经过测试,似乎正在工作。它应该是被接受的答案,恕我直言。 – ysap 2012-08-28 20:08:50

回答

30

这为我工作与Eclipse 3.7.2和8.0.2 CDT:

  1. 打开项目属性| C/C++构建|发现选项。
  2. 点击按钮清除发现的条目现在:。
  3. 重建。

它似乎是CDT 8中的一项新功能。多年来,我有过这种“无效项目路径:重复路径条目”的问题,这显然是新提供的解决方案。

在执行此操作之前,在C/C++常规|路径和符号|包含选项卡。我无法摆脱这些。它们仅在Show内置值被选中时出现,所以它们显然是以某种方式生成的。完成上述操作后,它们被替换为没有重复的集合。唯一的区别是在Assembly,GNU C和GNU C++下出现了相同的设置。以前他们是不同的集合。例如,Assembly的那些是空的。

到目前为止问题还没有返回。

0

这似乎是CDT中的一个错误。

如果你真的想摆脱它,你应该尝试摆脱项目路径中的空间;这是在错误的搜索结果中建议的。如果这不起作用,您可以尝试打开.cproject文件 - 这是所有CDT设置所在的位置,并检查包含重复条目的实际路径。

26

这个问题是一个真正的痛苦处理。它不能很好地工作。

这是适用于Eclipse的3.4.1/5.0.1 CDT

从我可以告诉,当你创建一个“C/C++项目”中的CDT,它会尝试自动检测您的include路径。好主意,但实施是可怕的。

如果您删除或重命名一个目录,旧的目录是剩余的。如果您重命名该项目,旧的目录是剩余的。当Eclipse找不到那个旧目录时,它会给你提示。

我的解决方案是完全关闭自动发现并手动管理我的包含路径。你需要包含这些包含路径的列表,例如ctrl-click(自动导航到定义/ functions/files/etc)以及遮蔽#define块。它从这个列表中建立索引。

以下是您需要做的事情: 在项目浏览器中右键单击您的项目并转至属性。 转到C/C++编译 - >查找选项 取消选中“自动路径和符号的发现”

现在去C/C++常规 - >路径和符号 你会看到下包括片组件,C和C++语言具有相应的自动发现包含目录。 转到所有3种语言并删除所有内容。 打开你的makefile并将你的包含转录成相应的语言。 项目重命名仍然会导致索引器中断。 $ {project_name}和其他全局变量似乎不起作用。如果遇到问题,请使用“工作区”按钮浏览到您想要包含的目录,因为这似乎始终有效,但手动输入不会。 点击应用,然后确定。 右键点击你的项目,进入index->​​ rebuild 重新启动eclipse。

这应该永远解决问题。任何时候,由于#define或#ifdef块的原因,不正确的内容会被遮盖,这是因为该文件列表已过时。如果您在#include行中收到“未解决的内容”,您也会知道该列表已过时。

Doug Schaefer,希望谷歌可以索引这个,找到你的名字,然后你解决这个糟糕的实现。 =)

+1

就像更新一样,您可以使用$ {ProjName}变量代替实际的项目名称,并且它将通过项目重命名持续。 – 2009-08-03 18:07:28

12

我发现这个错误报告来帮助我的问题。我移动了一些包含路径,无法摆脱旧路径。

我也看到过这个问题,老路径 永远不会被删除。要手动修复 文件,你需要移动/删除 $ {}项目名称下.SC $ {}工作区/。元/ .plugins/org.eclipse.cdt.make.core

找到的文件https://bugs.eclipse.org/bugs/show_bug.cgi?id=206372

0

您应该检查您是否已经手动定义了日食可以从您的makefile中找出的符号。我有一个有手动编写的makefile的项目,通过删除手动添加到C/C++常规 - >路径和符号 - >符号中的符号解决了问题。

0

没有需要去除.metadata家伙,只是删除位于C中的所有路径/ C++通用 - >路径和符号 - >符号和替换它们使用点击BUTTOM但没有手动给路径

1

在这里,我刚发现另一种方式来重新检测自动的路径:

  1. 打开 “工作区设置 - > C/C++ - >构建 - >设置 - >发现”
  2. 查找“CDT内建编译器设置[碎片]”
  3. 点击“清除项目”和“重置”按钮右侧
  4. 重建项目,并完成

希望这会有所帮助。

参考: http://qing.blog.sina.com.cn/1802712302/6b7334ee33004def.html

0

这里是为Eclipse 4.4迟到的回答(这不具有发现选项)。

删除项目的infoPath文件。Eclipse或ADT插件(不知道哪个)会重新创建它,并使用正确的路径填充它。

您可以在<Eclipse workspace>/.metadata/.plugins/com.android.ide.eclipse.ndk/<project>.pathInfo找到该项目的infoPath文件。 Eclipse或ADT插件从两个地方确定新路径:(1)在Eclipse偏好设置下设置的NDK目录;(2)在Application.mk中设置路径。所有这些路径都成为Eclipse下的“内置”路径。

另见How to change built-in C/C++ paths pointing to a deleted android-ndk-r9 installation?

2

使用Eclipse露娜和CDT 8.5

我通过

  1. 打开项目属性固定的问题| C/C++常规|路径和符号
  2. 看看源位置选项卡,我重命名了一个目录,并且它在此列表中未更新。
  3. 重建