Qt, Qb:generar moc_Filename.cpp automáticamente
Pregunta
Entonces tengo una clase etiquetada Q_OBJECT, que requiere .moc pregenerado para ser utilizable.
En mi archivo .qbs, tengo un CppApplication
artículo;este parece ser el tipo incorrecto de proyecto, ya que qbs no llama moc ClassName.cpp
para generar moc's para mí.¿Qué debería usarse en su lugar/modificarse?
-
Sabía acerca de la dependencia de Qt.core, pero no funcionaba en mi instalación defectuosa de Qt;Mientras intentaba solucionarlo, surgieron estos hechos:
- Era necesario detectar la cadena de herramientas Qt (
qbs-setup-qt
) y llamaqbs-config-ui
- De hecho, Qbs almacena las reglas de compilación en core.qbs, vinculadas a través de la dependencia Qt/core.
- es posible copiar/pegar las reglas de compilación en mi propio archivo .qbs y evitar dependencias externas;Estoy considerando esto como un truco sucio para implementar el código en sistemas de compilación realmente dañados (ahora tengo una palabra para el soporte de Qt en Gentoo).
Solución
Creo que es posible que le falte la dependencia de la aplicación de los módulos Qt.La regla para la generación de archivos moc es parte del módulo Qt.core.Podrías agregar esta dependencia con:
CppApplication {
name: "MyApp"
files: "path_to_source/**"
Depends { name: "Qt.core" } // Optional
Depends { name: "Qt.widgets" }
}
Como todos los demás módulos de Qt tienen una dependencia implícita de Qt.core, la dependencia explícita de Qt.core podría omitirse si existe una dependencia de un módulo Qt diferente (Qt.widgets en este ejemplo).
Se pueden encontrar más detalles en http://doc.qt.io/qbs/qt-modules.html