QT, QBS: Genera automaticamente MOC_FILENAME.CPP
Domanda
Quindi ho una classe taggata Q_object, che richiede pregenerata .Moc per essere utilizzabile.
Nel mio file .qbs, ho un elemento CppApplication
;Questo sembra essere il tipo sbagliato di progetto, poiché QBS non chiama moc ClassName.cpp
per generare moc per me.Cosa dovrebbe essere usato invece / modificato?
-
Così sapevo la dipendenza da qt.core, ma non funzionava sulla mia installazione paralizzata di QT;Mentre stavo cercando di aggiustarlo, questi fatti sono venuti:
- .
- È necessario rilevare QT Toolchain (
qbs-setup-qt
) e chiamareqbs-config-ui
- QBS memorizza in effetti le regole di build in Core.QBS, collegate in via Qt / Core dipendenza.
- .
- è possibile copiare / incollare le regole di compilazione nel mio file .qbs ed evitare dipendenze esterne;Sto considerando questo come un hack sporco per la distribuzione del codice su sistemi di build davvero paralizzati (ora ho una parola per il supporto Qt su Gentoo).
Soluzione
Penso che potresti mancare la dipendenza dell'applicazione sui moduli QT. La regola per la generazione dei file MOC è parte del modulo Qt.core. Potresti aggiungere questa dipendenza con:
CppApplication {
name: "MyApp"
files: "path_to_source/**"
Depends { name: "Qt.core" } // Optional
Depends { name: "Qt.widgets" }
}
.
Poiché tutti gli altri moduli QT hanno una dipendenza implicita del Qt.core la dipendenza esplicita potrebbe su Qt.core potrebbe essere saltata se c'è una dipendenza da un modulo Qt diverso (Qt.Widgets in questo esempio). Maggiori dettagli è possibile trovare su http://doc.qt.io/qbs/qt-modules.html