【发布时间】:2017-03-09 11:02:36
【问题描述】:
我正在开发一个 C 应用程序,并使用我觉得很棒的 Eclipse CDT IDE。该项目使用 Glib、Gtk 和 GStreamer ,所以每当我在文件中使用它们的一些功能时,我都需要包含:
#include <glib.h>
#include <gtk/gtk.h>
#include <gst/gst.h>
代码编译没有任何错误,因为用于搜索这些标头的 PATH 变量已在 CMakeLists.txt 中正确设置。
但是,在处理该项目时,我发现在我的代码中突出显示令人讨厌的错误,这些错误涉及类型定义,如 gchar 或 GValue 或 GTKApplication;概述的错误是“无法解析符号 ****”。这些定义在我的 Eclipse IDE 找不到的头文件中(包含在 glib.h 中),如果不是在编译时(实际上程序编译正确)。相反,在 gst.h 中定义的类型 GError 不会被预编译器突出显示为错误。
然后我希望我的 Eclipse IDE 可以搜索嵌套标题(#include 在 #inlcude inside...)以找到这些类型定义,以免突出显示那些烦人的错误。我该怎么做?我不想直接包含完成类型定义的所有文件。
编辑:正如 Jonah Graham 所述,问题不在于 Eclispe 对标头进行了“单步研究”,因为它像任何其他 IDE 一样检查其他包含中的包含。这是 c 和 Eclipse 的 CMake 错误
提前致谢。
【问题讨论】:
-
或者你可能想考虑cmake plug-ins之一,但是我不使用它们,所以YMMV。
-
Eclipse 肯定会找到 glib.h,但问题是 Eclipse CDT 不考虑 glib.h 包含的头文件中定义的类型,因为它进行了“一步研究”。实际上,例如,如果我直接在源文件中包含定义 GValue 的标头,则突出显示 GValue 的错误就会消失。但我希望 Eclipse 通过扩展 glib.h 中包含的头文件来自动执行此操作,而不必包含所有必要的头文件(会太多)
-
不,CDT 不做“一步到位的研究”。 CDT 当然会检查包含的包含,否则即使标准头文件也不起作用。如果你在 github 上弹出你的项目,我可以看看我是否可以重现你的问题。
-
好的,它已经在 Github 上了:project.
标签: c eclipse eclipse-cdt glib