Perchè Qt fa uso di un proprio strumento di marca, qmake?
-
21-09-2019 - |
Soluzione
Qt usa qmake per supportare in modo trasparente i vari addons di Qt, tra cui "moc, il compilatore meta-oggetto" (che fornisce segnali e slot) "UIC, il compilatore ui" (che crea file di intestazione da file di design .ui), "rcc, il compilatore di risorse" (che raccoglie le risorse).
Non c'è nulla che impedisca di utilizzare qualsiasi sistema di compilazione che si desidera. tuttavia, è molto più lavoro. Ad esempio, è necessario eseguire "moc" su ogni file di intestazione che contiene una classe che ha segnali o slot. In generale, non è consigliabile, soprattutto per qualcuno che ha appena iniziato a utilizzare Qt.
QMake non chiama g ++ / gcc direttamente. Invece, qmake crea file make native su piattaforma corrente. Sotto Linux crea GNU Make file standard, sotto le finestre può generare Visual Studio rendere i file, in Mac OS X è in grado di generare file di progetto XCode. È quindi richiama il vostro sistema di compilazione nativa (sia GNU Make, o MS NMake, o xcodebuild o altro), che chiamerà il compilatore nativo (g ++ / gcc o qualsiasi altra cosa).
Altri suggerimenti
Nel mio opinnion qmake è fresco per progetti semplici (si può semplicemente qmake -project; qmake; fare), ma orribile e non abbastanza documentato per progetti abbastanza grande. In particolare la funzionalità di configurazione di qmake è uno scherzo.
I migliori sistemi di compilazione che conosco sono CMake e Waf (Python -based). Nei miei Qt-progetti che uso CMake per fare il lavoro. Proprio come KDE-ragazzi:)
Per sostenere il suo sistema di segnale / slot di Qt si basa su un preprocessore speciale e compilatore che genera oggetti intermedi che fanno molte delle elaborazioni. Essi si riferiscono a questo come il Meta-Object Compiler o MOC .
Qt 5 Documentazione: con il compilatore Meta-Object per i dettagli .
La MOC (insieme a un paio di altri strumenti intermedi) funziona in combinazione con qmake
; un costruire strumento di automazione che produce Makefile nel formato nativo (VC ++, g ++, etc.) che si accumulano i file intermedi generati dal MOC così come tutti i tuoi file di origine nel eseguibile finale.
qmake è progettato per essere piattaforma trasversale e flessibile. Si può compatibile con Microsoft Visual Studio e Xcode.
È possibile trovare tutto nella qmake Manuale .
qmake genera un Makefile sulla base di le informazioni in un file di progetto. I file di progetto vengono creati dal sviluppatore, e di solito sono semplici, ma i file di progetto più sofisticati possono essere creato per progetti complessi. qmake contiene funzionalità aggiuntive per sostenere lo sviluppo di Qt, compresi automaticamente costruire regole per moc e UIC. qmake può anche generare progetti per Microsoft Visual Studio senza richiedere lo sviluppatore per modificare il file di progetto.
Per
a), perché fa molto dietro le quinte per voi
b) sì, vedi a)
c) sì, lo fa chiamata g ++ (ma in grado di supportare altri compilatori se li avete)