【问题标题】:setup include path in eclipse CDT in mac os (headers from framework)设置包括 mac os 中 eclipse CDT 中的路径(来自框架的头文件)
【发布时间】:2011-04-20 13:35:22
【问题描述】:

例如我需要包含一个标题

#include <OpenGL/glext.h>

虽然它实际上是OpenGL.framework/Headers/下的头文件 glext.h。 因此,无法给 Eclipse 提供有关“OpenGL/gext.h”的物理路径,而且我总是收到未解决的包含警告。

我仍然可以构建和运行它们(使用托管的 makefile 项目),但是无法从那些“已解析”的头文件中浏览函数或定义。

有什么解决办法吗?

【问题讨论】:

标签: c++ macos frameworks include


【解决方案1】:

是的,有一个。右键单击“项目浏览”窗口中的项目,然后单击“属性”。在那里打开“C/C++ General”列并选择“Path and symbols”。现在您可以看到该项目的所有包含库路径。如果您使用 C,则将 OpenGL 库添加到 GNU C,或者如果您使用 C++,则将其添加到 GNU C++。不幸的是,您必须为每个新项目都这样做。我一直在寻找如何在默认情况下执行此操作,但没有什么真正有用的。希望这可以帮助您摆脱那些烦人的黄色波浪线。

【讨论】:

  • 你描述了正常的过程,但是在这里不起作用,因为没有“OpenGL/gext.h”的真实路径。 Mac 编译器将 #include 转换为“OpenGL.framework/Headers/gext.h”以查找文件,但 Eclipse 不理解这一点。
【解决方案2】:

虽然不理想,但我对此的解决方案是创建一个文件夹“/Developer/Framework Headers”(尽管名称并不重要),并从例如链接“/System/Library/Frameworks/Foo.framework/Headers” 到所述文件夹下的“Foo”。然后在 Eclipse 中,我将“/Developer/Framework Headers”添加到项目的包含中。

我说不理想,因为除了必须为您需要的框架创建链接并向每个项目添加包含之外,Eclipse 在某些情况下似乎有问题,例如嵌套框架(例如 ApplicationServices 下的 CoreGraphics),但 YMMV。

【讨论】:

    【解决方案3】:

    由于当前的 Eclipse CDT 版本没有正确执行子框架头包含,您可以通过创建指向每个子框架的包含目录的符号链接来避免子框架问题(例如由 CoreServices 头文件生成的问题)。我在this博客文章中详细阐述了这个主题,它源于this question上的danhan回答。

    为了自动化这个过程,我创建了一个 Z shell 脚本来自动化这个过程并创建到指定框架的头目录的符号链接,以及到每个子框架的包含目录的链接.脚本可以在in this GitHub repository找到。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 2021-11-20
      • 2013-04-01
      • 2015-02-07
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多