【问题标题】:Compiling 3rd party framework with Qt 5.1.1使用 Qt 5.1.1 编译 3rd 方框架
【发布时间】:2013-09-03 10:55:15
【问题描述】:

我一直很高兴在 Qt 5.0 中使用 3rd 方框架编译项目。升级到 Qt 5.1 后,链接器无法再找到第 3 方框架。

有一个 Qt 错误报告 here,但我看到该项目已关闭。报告底部有一条评论指出:-

在 /Library/Frameworks 中构建和链接框架(应将以下内容添加到 .pro 文件中):

QMAKE_OBJECTIVE_CFLAGS += -F/Library/Frameworks
QMAKE_LFLAGS += -F/Library/Frameworks
QMAKE_LINK += -framework Foo

当我这样做时,它没有任何效果。此外,第 3 方框架是 C++ 库,因此使用 QMAKE_OBJECTIVE_CFLAGS 将无济于事。我尝试用它代替 QMAKE_CXXFLAGS,但仍然失败。

此外,在将 QMAKE_OBJECTIVE_CFLAGS 和 QMAKE_LINK 添加到 .pro 文件时,Qt Creator 不会将它们突出显示为已知的编译器标志。

有谁知道如何解决这个问题,而不用回到 Qt 5.0?

【问题讨论】:

  • 对谁投反对票,请解释原因;在没有解释的情况下这样做是没有建设性的。

标签: macos qt linker clang qt5


【解决方案1】:

你有点不清楚你到底在做什么,以及它是如何失败的。

如果您尝试使用 .cpp 文件中的框架,则确实需要设置 QMAKE_CXXFLAGS += -F/Library/Frameworks,可能还需要设置 QMAKE_CFLAGS(错误报告中的示例假定框架公开了 Objective-C 绑定。我会纠正的)

试试这个,如果仍然失败,重新打开带有日志和重现方法的错误报告。

(Qt Creator 的缺失亮点不相关,它们仍然是 qmake 变量。)

【讨论】:

  • 感谢您的回答。是的,我可能有点不清楚发生了什么,特别是因为它对我不起作用!我知道objective-c 标志是无关紧要的,尽管我发布它是因为它是来自示例的引用。我尝试用它代替 QMAKE_CXXFLAGS 和 QMAKE_CFLAGS,但这也不起作用。至于 QtCreator,这只是一个建议,也许它应该接受它,但我并不依赖它。我会清理项目,再试一次,让你知道进展如何。谢谢。
【解决方案2】:

这里的问题是由于 .pro 文件已经引用了 3rd 方库,在使用 Qt 5.0 时,如下所示:-

QMAKE_LFLAGS += -F /Library/Frameworks/otherlibrary.framework/
LIBS += -framework otherlibrary

我没有意识到,虽然 QMAKE_LFLAGS 包含了特定框架的路径,但它还需要到框架根目录的路径:-

QMAKE_LFLAGS += -F/Library/Frameworks

添加解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多