【问题标题】:Headers in 3rd party frameworks on Mac OS XMac OS X 上第 3 方框架中的标头
【发布时间】:2011-03-28 05:43:33
【问题描述】:

我在 Qt 中使用 Sparkle 框架。我已将以下内容添加到我的 .pro 文件中:

LIBS += -framework Sparkle
QMAKE_CXX_FLAGS += -F/path/to/the/directory/sparkle.framework/is/in

但是,我收到一个编译错误,提示找不到“Sparkle/Sparkle.h”。框架头文件物理上驻留在 MyFramework.framework/Headers/*.h 中,并且像 MyFramework/*.h 一样包含在其中

我需要向我的 .pro 文件添加哪些命令才能正确包含 Sparkle 框架标头?

【问题讨论】:

  • 我将框架复制到 /System/Library/Frameworks 并且能够编译它。我仍然无法链接。

标签: macos qt frameworks header sparkle


【解决方案1】:

您可以在.pro 文件中使用INCLUDEPATH

来自文档,

此变量指定编译项目时应搜索的#include 目录。采用 ';'或空格作为目录分隔符。

所以,在你的情况下,它会像,

INCLUDEPATH = MyFramework.framework/Headers

在哪里

MyFramework.framework/Headers 是标头的物理位置

我从没用过 MAC OS,但仍然希望它有所帮助..

编辑

如果您想包含 FrameWorkName/HeaderFile.h 之类的内容,您可以停止指定所需的文件夹。

例如,

如果home/CommonFolder/FrameWorkName/HeaderFile.h是你的头文件的物理位置,你可以给INCLUDEPATH as

INCLUDEPATH = home/CommonFolder

现在在您的 .cpp 中,您可以提供 #include "FrameWorkName/HeaderFile.h"

【讨论】:

  • 不,这不起作用,因为您应该直接包含FrameworkName/someheader.h,而不是someheader.h
  • @有什么具体的原因你不想直接包含并包含像FrameworkName/someheader.h ??
  • 是的,这就是你应该包含所有框架头文件的方式,并且该框架内的头文件中有#include <Framework/otherheader.h>,所以必须这样做。对于位于 /Library/Frameworks 中的框架,它似乎可以自动运行,但在其他任何地方都是一个问题......
【解决方案2】:

问题是我使用的是QMAKE_CXXFLAGS,我需要使用QMAKE_CFLAGS 让编译器包含头文件。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 2015-05-24
  • 2011-12-30
  • 2012-04-26
  • 2010-11-20
相关资源
最近更新 更多