Qt, Qbs:gerar moc_Filename.cpp automaticamente
Pergunta
Portanto, tenho uma classe marcada com Q_OBJECT, que requer .moc pré-gerado para ser utilizável.
No meu arquivo .qbs, tenho um CppApplication
item;este parece ser o tipo errado de projeto, pois qbs não chama moc ClassName.cpp
para gerar mocs para mim.O que deve ser usado em vez disso/ajustado?
-
Então, eu sabia sobre a dependência do Qt.core, mas não estava funcionando na minha instalação deficiente do Qt;enquanto eu tentava consertar, estes fatos surgiram:
- Foi necessário detectar o conjunto de ferramentas Qt (
qbs-setup-qt
) e ligueqbs-config-ui
- Na verdade, o Qbs armazena as regras de construção em core.qbs, vinculadas por meio da dependência Qt/core.
- é possível copiar/colar as regras de construção em meu próprio arquivo .qbs e evitar dependências externas;Estou considerando isso como um truque sujo para implantar o código em sistemas de compilação realmente deficientes (agora tenho uma palavra para suporte Qt no Gentoo).
Solução
Acho que pode estar faltando a dependência do aplicativo nos módulos Qt.A regra para geração dos arquivos moc faz parte do módulo Qt.core.Você pode adicionar esta dependência com:
CppApplication {
name: "MyApp"
files: "path_to_source/**"
Depends { name: "Qt.core" } // Optional
Depends { name: "Qt.widgets" }
}
Como todos os outros módulos Qt têm uma dependência implícita do Qt.core, a dependência explícita do Qt.core pode ser ignorada se houver uma dependência de um módulo Qt diferente (Qt.widgets neste exemplo).
Mais detalhes podem ser encontrados em http://doc.qt.io/qbs/qt-modules.html