Eclipse CDT 项目路径无效

Posted

技术标签:

【中文标题】Eclipse CDT 项目路径无效【英文标题】:Eclipse CDT Invalid Project Path 【发布时间】:2010-09-23 08:53:00 【问题描述】:

我有一个使用 makefile 构建的 C 项目,Eclipse 不断警告“无效的项目路径:重复的路径条目”,但我不知道它到底要我做什么。我想禁用此警告并继续我的生活。

我的应用程序编译并运行良好,除此之外没有任何警告。作为一个尽职尽责的开发人员,我热衷于解决这个问题,所以我拥有只有干净的构建才能带来的温暖的模糊性。

【问题讨论】:

如果您使用的是 Eclipse 3.7/CDT 8,请查看 Kenneth Evans 的答案。我还没有测试它,但它看起来不错,如果它适合你,请发表评论。 经过测试,似乎可以正常工作。恕我直言,这应该是公认的答案。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

处理这个问题真的很痛苦。效果不是很好。

这适用于 Eclipse 3.4.1 / CDT 5.0.1

据我所知,当您在 CDT 中创建“C/C++ 项目”时,它会尝试自动检测您的包含路径。好主意,但实施起来很糟糕。

如果您删除或重命名一个目录,旧目录将被保留。如果重命名项目,旧目录将保留。当 Eclipse 找不到那个旧目录时,它会给出警告。

我的解决方案是完全关闭自动发现并手动管理我的包含路径。您需要此包含路径列表,用于 ctrl-click(自动导航到定义/功能/文件/等)和遮蔽 #define 块。它从这个列表中建立索引。

您需要执行以下操作: 在项目资源管理器中右键单击您的项目并转到属性。 转到 C/C++ 构建 -> 发现选项 取消选中“自动发现路径和符号”

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

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

Doug Schaefer,希望 Google 索引这个,你找到你的名字,然后你修复这个糟糕的实现。 =)

【讨论】:

作为更新,您可以使用 $ProjName 变量来代替实际的项目名称,并且它将通过项目重命名而持续存在。 嗨,杰夫,手动设置路径后,我们如何使用 gdb。它一直挂在某些点。【参考方案3】:

我发现这个错误报告可以帮助解决我的问题。我已经移动了一些包含路径并且无法摆脱旧路径。

我也遇到过这个问题,旧路径 永远不会被删除。手动修复 您需要移动/删除的文件 $projectname.sc 文件位于 $workspace/.metadata/.plugins/org.eclipse.cdt.make.core

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

【讨论】:

【参考方案4】:

您应该检查您是否手动定义了 Eclipse 可以从您的 makefile 中找出的符号。我有一个项目,它有一个手动编写的 makefile,通过删除我手动添加到 C/C++ General -> Paths and Symbols -> Symbols 的符号解决了这个问题。

【讨论】:

【参考方案5】:

这对我来说适用于 Eclipse 3.7.2 和 CDT 8.0.2:

    打开项目属性| C/C++ 构建 |发现选项。 立即单击清除发现的条目旁边的按钮:。 重建。

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

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

到目前为止,问题还没有出现。

【讨论】:

很好的答案。困扰发现/索引器模块的众多问题之一的另一种“隐藏”解决方案。唯一的问题是我看不到选择多个项目并一次执行清理的方法(在 64 核工作区上,我有 64 个每核项目加上一些......)。 谢谢,我在使用premake生成gmakefile时遇到了这个问题,发现路径和符号选项卡下隐藏了重复。 发现选项似乎仅在某些情况下存在(它绝对不存在于自动工具中)。在这种情况下,请转到 .metadata/.plugins/org.eclipse.cdt.make.core/ 并删除错误路径。 感谢 @Let_Me_Be 对我有用,尽管我在 .cproject 文件中发现了错误条目。【参考方案6】:

无需删除 .metadata 伙计们,只需删除 C/C++ General -> Paths and Symbols -> Symbols 中的所有路径> 并使用点击按钮替换它们,但不要手动提供路径

【讨论】:

【参考方案7】:

这里我刚刚找到了另一种自动重新检测路径的方法:

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

希望这会有所帮助。

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

【讨论】:

【参考方案8】:

这是 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?

【讨论】:

【参考方案9】:

使用 Eclipse Luna 和 CDT 8.5

我解决了这个问题

    打开项目属性| C/C++ 通用 |路径和符号 查看“源位置”选项卡,我已重命名了一个目录,但此列表中没有更新。 重建

【讨论】:

以上是关于Eclipse CDT 项目路径无效的主要内容,如果未能解决你的问题,请参考以下文章

为啥eclipse添加maven路径的时候出现maven目录无效

eclipse中的交叉编译器前缀和路径

从现有源创建新项目时 Eclipse“无效项目描述”

如何使用 Eclipse CDT 构建 SCons 项目?

centos 配置eclipse jdt和cdt

Eclipse CDT 中优化的项目结构