Eclipse CDT无效的项目路径

44

我有一个用makefile构建的C项目,Eclipse一直警告"Invalid project path: Duplicate path entries",但我无法理解它要我做什么。我希望能够禁用此警告并继续进行。

我的应用程序编译和运行都很好,除了这个警告没有任何其他警告。作为一个有责任心的开发者,我很想解决这个问题,这样我就可以享受只有干净构建才能带来的美好感觉了。


1
如果您正在使用Eclipse 3.7/CDT 8,请查看Kenneth Evans的答案。我还没有测试过,但它看起来不错,如果对您有用,请留下评论。 - David Martin
测试过,似乎能够正常运作。在我看来应该是被接受的答案。 - ysap
9个回答

32

我在使用Eclipse 3.7.2和CDT 8.0.2时,尝试如下方法解决问题:

  1. 打开项目属性 | C/C++ Build | Discovery Options。
  2. 点击Clear discovered entries now:按钮。
  3. 进行重建。

这似乎是CDT 8中的新功能。多年来我一直遇到“Invalid project path: Duplicate path entries”问题,而这显然是新提供的解决方案。

在执行此操作之前,在C/C++ General | Paths and Symbols | Includes选项卡下存在重复的路径。我无法摆脱它们。只有在勾选Show built-in values时才会出现它们,因此它们显然以某种方式生成。在执行上述步骤后,它们被替换为不具有重复项的一组值。唯一的区别是相同的设置出现在Assembly、GNU C和GNU C++下。先前它们是不同的设置。例如,Assembly的设置为空。

到目前为止,问题尚未再次出现。


很棒的答案。这是解决Discovery/Indexer模块中众多问题之一的“隐藏”解决方案。唯一的问题是我没有看到一种可以选择多个项目并同时对它们进行清理的方法(在一个64核工作区中,我有64个每核心项目加上一些...)。 - ysap
谢谢,我使用Premake生成gmake文件时遇到了这个问题,并发现在“路径和符号”选项卡下隐藏了重复。 - Jens Åkerblom
发现选项似乎只在某些情况下存在(它绝对不存在于自动工具中)。在这种情况下,转到.metadata/.plugins/org.eclipse.cdt.make.core/并删除错误路径。 - Šimon Tóth
谢谢@Let_Me_Be,这对我有用,尽管我在我的.cproject文件中找到了错误的条目。 - dubbaluga

27

这个问题真的很难处理。它的工作效果不是很好。

适用于Eclipse 3.4.1 / CDT 5.0.1

据我所知,在CDT中创建“C / C ++项目”时,它会尝试自动检测您的包含路径。这是个好主意,但实现非常糟糕。

如果您删除或重命名目录,则旧目录将保留下来。如果重新命名项目,则旧目录将保留下来。当Eclipse找不到旧目录时,会提醒您。

我的解决方案是完全关闭自动发现,并手动管理我的包含路径。例如,像ctrl-click(自动导航到定义/函数/文件等)和遮蔽#define块之类的功能需要使用此包含路径列表。索引是基于这个列表构建的。

以下是您需要执行的操作: 在项目浏览器中右键单击您的项目,然后转到属性。 转到C / C ++ Build-> Discovery Options 取消选择“自动发现路径和符号” 现在转到C / C ++ General-> Paths and Symbols 您将看到包括Assembly、C和C++语言及相应的自动发现包含目录。 转到所有3种语言并删除所有内容。 打开您的makefile,并将包含内容抄写到相应的语言中。 项目重命名仍将导致索引器崩溃。${project_name}和其他全局变量似乎不起作用。如果您遇到问题,请使用“工作区”按钮浏览到要包含的目录,因为这似乎总是有效的,但手动输入无效。 单击应用,然后单击确定。 右键单击您的项目,转到索引->重新构建 重新启动Eclipse。

这应该永久解决问题。每当由于#define或#ifdef块而错误地遮蔽某些内容时,它会修复这些问题。如果您在#include行上遇到“未解析的包含”,则也会知道该列表已过时。

Doug Schaefer,希望Google能够索引此内容,找到您的名称并修复这个可怕的实现。=)


1
只是一个更新,您可以使用${ProjName}变量代替实际项目名称,并且它将在项目重命名时保持不变。 - Jeff Lamb
嗨Jeff,在手动设置路径后,我们如何使用gdb。它在某些点上一直挂起。 - Aditya P

13

我找到了这个错误报告来解决我的问题。我已经移动了一些包含路径,但无法摆脱旧路径。

我也遇到过这个问题,旧路径从未被删除。要手动修复文件,您需要移动/删除在${workspace}/.metadata/.plugins/org.eclipse.cdt.make.core下找到的${projectname}.sc文件。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=206372


6

使用Eclipse Luna和CDT 8.5

我通过以下方式解决了问题:

  1. 打开项目属性 | C/C++常规 | 路径和符号
  2. 查看源代码位置选项卡,我重命名了一个目录,但该列表中未更新。
  3. 重新构建

1

我刚刚发现了另一种自动重新检测路径的方法:

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

希望这能有所帮助。

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


0

不需要删除 .metadata,只需在 C/C++ General -> Paths and Symbols -> Symbols 中删除所有路径,并用单击按钮替换它们,但不要手动给出路径。


0

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

如果你真的想摆脱它,你应该尝试去掉项目路径中的空格;这是在搜索结果中建议的错误解决方法。如果这不起作用,你可以尝试打开.cproject文件——这是所有CDT设置所在的地方——并检查是否存在重复条目的实际路径。


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下的“内置”路径。

另请参见如何更改指向已删除android-ndk-r9安装的内置C / C ++路径?


0

你应该检查一下是否手动定义了符号,Eclipse能否从你的Makefile中找到它。我的一个项目使用手写Makefile,问题是通过删除我手动添加到C/C++ General -> Paths and Symbols -> Symbols的符号解决的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接