所以我有一个 Q_OBJECT 标记类,它需要预先生成的 .moc 才能使用。

在我的 .qbs 文件中,我有一个 CppApplication 物品;这似乎是错误的项目类型,因为 qbs 不调用 moc ClassName.cpp 为我生成 moc。应该使用什么来代替/调整?

-

所以我知道 Qt.core 依赖项,但它在我安装的 Qt 上不起作用;当我试图解决这个问题时,出现了以下事实:

  • 需要检测 Qt 工具链(qbs-setup-qt)并致电 qbs-config-ui
  • Qbs 确实将构建规则存储在 core.qbs 中,通过 Qt/core 依赖项链接。
    • 可以将构建规则复制/粘贴到我自己的 .qbs 文件中并避免外部依赖项;我认为这是在真正瘫痪的构建系统上部署代码的肮脏黑客行为(现在我对 Gentoo 上的 Qt 支持有一个词)。
有帮助吗?

解决方案

我认为您可能缺少应用程序对 Qt 模块的依赖性。moc 文件的生成规则是 Qt.core 模块的一部分。您可以添加此依赖项:

CppApplication {
    name: "MyApp"
    files: "path_to_source/**"

    Depends { name: "Qt.core" } // Optional
    Depends { name: "Qt.widgets" }
}

由于所有其他 Qt 模块都对 Qt.core 具有隐式依赖关系,因此如果存在对不同 Qt 模块(本例中为 Qt.widgets)的依赖关系,则可以跳过对 Qt.core 的显式依赖关系。

更多详细信息可以在以下位置找到 http://doc.qt.io/qbs/qt-modules.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top