1

所以我有一个 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 支持有了一个词)。
4

1 回答 1

2

我认为您可能缺少应用程序对 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找到

于 2014-07-31T11:50:53.227 回答