Frage

Ich habe also eine mit Q_OBJECT markierte Klasse, die eine vorgenerierte .moc-Datei benötigt, um verwendbar zu sein.

In meiner .qbs-Datei habe ich eine CppApplication Artikel;Dies scheint der falsche Projekttyp zu sein, da qbs nicht aufruft moc ClassName.cpp um Mocs für mich zu generieren.Was sollte stattdessen verwendet/optimiert werden?

-

Ich wusste also von der Qt.core-Abhängigkeit, aber sie funktionierte bei meiner lahmgelegten Qt-Installation nicht;Als ich versuchte, das Problem zu beheben, kamen folgende Fakten ans Licht:

  • Es war erforderlich, die Qt-Toolchain zu erkennen (qbs-setup-qt) und Ruf an qbs-config-ui
  • Qbs speichert tatsächlich die Build-Regeln in core.qbs, verknüpft über die Qt/Core-Abhängigkeit.
    • Es ist möglich, die Build-Regeln zu kopieren/in meine eigene .qbs-Datei einzufügen und externe Abhängigkeiten zu vermeiden;Ich betrachte dies als einen schmutzigen Hack zur Bereitstellung des Codes auf wirklich lahmgelegten Build-Systemen (jetzt habe ich ein Wort für die Qt-Unterstützung auf Gentoo).
War es hilfreich?

Lösung

Ich denke, Ihnen fehlt möglicherweise die Abhängigkeit der Anwendung von den Qt-Modulen.Die Regel zur Generierung der Moc-Dateien ist Teil des Qt.core-Moduls.Sie können diese Abhängigkeit hinzufügen mit:

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

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

Da alle anderen Qt-Module eine implizite Abhängigkeit von Qt.core haben, könnte die explizite Abhängigkeit von Qt.core übersprungen werden, wenn eine Abhängigkeit von einem anderen Qt-Modul besteht (in diesem Beispiel Qt.widgets).

Weitere Details finden Sie unter http://doc.qt.io/qbs/qt-modules.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top