2016-06-29 41 views
9

All'interno del file .pro, le cose sono semplici se includi i file header (usa HEADERS), i file C++ (usa SOURCES) e Objective-C/Objective -C++ (usare OBJECTIVE_SOURCES), ma mi è meno chiaro come devono essere inclusi altri tipi di file.In Qt, quando dovresti usare RISORSE vs DISTFILES vs OTHER_FILES

ad es. esaminando vari esempi forniti da Qt, è incoerente se i file QML debbano essere DISTFILES, OTHER_FILES o contenuti in un file .qrc (ad esempio RESOURCES). Sono andato con mettere file QML in un file qml.qrc.

La mia domanda è sorta perché sto inclusi i file di dati, come i file wav audio, all'interno di un file .qrc (anche come mostrato negli esempi Qt; per esempio Qt Quick Demo - Maroon in Trouble), ma questo ha rallentato la compilazione fino a una scansione. E nel caso di MinGW su Windows, si blocca semplicemente con un errore di memoria esaurita quando raggiunge 1 GB. Ci deve essere un modo migliore per includerli!

Potrebbe fornire una guida su quando utilizzare:

  • DISTFILES
  • OTHER_FILES
  • RESOURCES

risposta

9

Citando dal qmake manual:

RISORSE

Specifica il nome del file di raccolta di risorse (QRC) per il target. [...]

distfiles

Specifica un elenco di file da includere nel target dist. Questa funzione è supportata solo dalle specifiche UnixMake. [...]

OTHER_FILES

Questo sembra infatti privi di documenti, per lo meno non ho trovato nulla. Per quanto posso dire, tutti i file elencati qui sono collegati solo in Project Explorer (di Qt Creator per esempio) e non sono trattati in alcun modo da qmake.


Per quanto riguarda il tuo esempio si potrebbe considerare la spedizione dei file così come sono e non inserire in ogni file di risorse, perché sono compiled into the binary.

Si può anche dare un'occhiata a compiling external resources and using them per i file di grandi dimensioni per mantenere la semplicità del sistema di risorse di Qt.

+0

Appena modificato DIST_FILES su DISTFILES - grazie per la correzione –

+0

@PaulMasri Hai risposto a tutte le tue domande o hai altre richieste? Prego. – maxik

+0

Puoi spiegare cosa intendi con "potresti considerare di spedire i file così come sono"? Vuoi dire spedirli insieme all'eseguibile o in qualche modo includerli nell'eseguibile ma bypassare il compilatore di risorse? –

2
  • DISTFILES: Qualcosa di speciale per UNIX non utilizzerà in la maggior parte dei casi. Dalla documentazione:

Specifica un elenco di file da includere nel target dist. Questa funzione è supportata solo dalle specifiche UnixMake.

  • OTHER_FILES: file, che sono parte di te progetto, ma non del "costruire". Questo può essere pensa come un readme, costruire suggerimenti, o qualsiasi altra roba, che non rientra nelle altre categorie
  • RESOURCES: .qrc lime, che saranno compilati nell'applicazione.

Per quanto riguarda l'utilizzo di quei tre con QML:
È possibile utilizzare fondamentalmente DISTFILES o OTHER_FILES per altri file. In QtCreator appaiono in un nodo come altri file. Questi due sono scambiabili per la maggior parte degli sviluppatori. Gli esempi Qt sono progetti locali, quindi non richiedono né una risorsa né entrambi, cioè puoi trovare i file QML, ad esempio OTHER_FILES e RESOURCES.

Per i file QML, è necessario utilizzare sempre RESOURCES, per fare in modo che Shure si trovi all'interno del file binario.

Problemi correlati