Este é o comando moc-qt5 que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
moc - gerar código de suporte de metaobjeto Qt
SINOPSE
potência [-o arquivo] [-i] [-f] [-k] [-ldbg] [-nw] [-p caminho] [-q caminho] [-v] arquivo
DESCRIÇÃO
Esta página documenta o Meta objeto Compilador para a estrutura do aplicativo Qt GUI. o potência
lê uma ou mais declarações de classe C ++ de um cabeçalho C ++ ou arquivo de origem e gera
um arquivo de origem C ++ contendo informações de metaobjetos para as classes. A fonte C ++
arquivo gerado pelo potência deve ser compilado e vinculado à implementação da classe
(ou pode ser #incluído no arquivo de origem da classe).
Se você usar qfazer para criar seus Makefiles, regras de construção serão incluídas que chamam o potência
quando necessário, então você não precisará usar o potência diretamente.
Em resumo, o sistema de metaobjetos é uma estrutura usada pelo Qt (ver http://doc.trolltech.com)
para programação de componentes e informações de tipo de tempo de execução. Ele adiciona propriedades e
informações de herança para (algumas) classes e fornece um novo tipo de comunicação entre
essas instâncias dessas classes, conexões de slot de sinal.
OPÇÕES
-o lima
Grave a saída para lima em vez de stdout.
-f Força a geração de uma instrução #include na saída. Este é o padrão
para arquivos cujo nome corresponde à expressão regular. [hH] [^.] * (ou seja, a extensão
começa com H or h ) Esta opção só é útil se você tiver arquivos de cabeçalho que
não seguir as convenções de nomenclatura padrão.
-i Não gere uma instrução #include na saída. Isso pode ser usado para executar potência
em um arquivo C ++ contendo uma ou mais declarações de classe. Você deve então #incluir
o código de metaobjeto no arquivo .cpp (consulte USO abaixo). Se ambos -f e -i e guarante que os mesmos estão
presente, o último vence.
-nw Não gere nenhum aviso. Não recomendado.
-ldbg Escreva uma enxurrada de informações de depuração Lex para stdout.
-p caminho
Faz potência prefixar caminho/ para o nome do arquivo na instrução #include gerada (se
um é gerado).
-q caminho
Faz potência prefixar caminho/ para o nome do arquivo de qt #include arquivos no gerado
código.
-v Exibe a versão de potência e Qt.
Você pode dizer explicitamente o potência não analisar partes de um arquivo de cabeçalho. Ele reconhece qualquer C ++
comentário (//) que contém as substrings MOC_SKIP_BEGIN ou MOC_SKIP_END. Eles funcionam como você
esperaria e você pode ter vários níveis deles. O resultado líquido visto pelo potência is
como se você tivesse removido todas as linhas entre um MOC_SKIP_BEGIN e um MOC_SKIP_END
USO
potência quase sempre é invocado por fazer(1), não manualmente.
potência é normalmente usado com um arquivo de entrada contendo declarações de classe como esta:
class YourClass: public QObject {
Q_OBJETO
Q_PROPERTY (...)
Q_CLASSINFO (...)
público:
YourClass (QObject * parent = 0, const char * name = 0);
~ YourClass ();
sinais:
slots públicos:
};
Aqui está uma regra makefile útil se você usar apenas GNU make:
m% .cpp:% .h
moc $ <-o $ @
Se quiser escrever de forma portátil, você pode usar regras individuais da seguinte forma:
mNOME.cpp: NOME.h
moc $ <-o $ @
Você também deve se lembrar de adicionar mNOME.cpp para suas FONTES (substitua seu nome favorito)
variável e mNOME.o à sua variável OBJECTS.
(Embora prefiramos nomear nossos arquivos de origem C ++ .cpp, o potência não sabe disso, então você pode
use .C, .cc, .CC, .cxx ou mesmo .c ++ se preferir.)
Se você tiver declarações de classe em arquivos C ++, recomendamos que você use uma regra makefile
como isso:
NOME.o: mNOME.cpp
mNOME.cpp: NOME.cpp
moc -i $ <-o $ @
Isso garante que fazer(1) irá executar o potência antes de compilar NOME.cpp. Você pode então
colocar
#include "nNAME.cpp"
no final de NOME.cpp, onde todas as classes declaradas naquele arquivo são totalmente conhecidas.
DIAGNÓSTICO
Às vezes, você pode obter erros de ligação, dizendo que YourClass :: className () é indefinido ou
que YourClass carece de um vtbl. Esses erros acontecem com mais frequência quando você se esquece de compilar
o código C ++ gerado pelo moc ou inclua esse arquivo de objeto no comando de link.
O potência irá avisá-lo sobre uma série de construções perigosas ou ilegais.
Use moc-qt5 online usando serviços onworks.net