2013-01-06 16 views
6

In un progetto Qt 4, creo un programma di installazione di Windows utilizzando Inno Setup. Le librerie richieste (qsqlite.dll, qjpeg4.dll, ecc.) Sono incluse nello script con variabili CMake come QT_QSQLITE_PLUGIN_RELEASE o QT_QJPEG_PLUGIN_RELEASE.Ottieni il percorso dei plugin aggiuntivi Qt 5

es: setup.iss.in:

[Files] 
Source: "myapp.exe"; DestDir: {app} 
Source: "${QT_QSQLITE_PLUGIN_RELEASE}"; DestDir: {app}/sqldrivers 
Source: "${QT_QJPEG_PLUGIN_RELEASE}"; DestDir: {app}/imageformats 

Ora il progetto dovrebbe migrare verso QT5. Tutto funziona bene, ma non riesco a trovare le variabili predefinite per ottenere Qt5 equivalente per questi percorsi plugin. Certo, potrei indicarli, ma sto cercando un modo per definirlo in modo pulito e indipendente.

+0

Non sono sicuro di una risposta, ma si potrebbe esaminare tutte le variabili utilizzando la tecnica descritta in [questo answer] (http://stackoverflow.com/a/9328525/424459) – Fraser

+0

Sì, ho usato esattamente questa macro per trovare le variabili menzionate di seguito con Qt4. Ma usando lo stesso, non riesco a trovare l'equivalente Qt5. Tutte le cose cmake sono state riscritte per la nuova versione del framework e alcune informazioni sono memorizzate come proprietà di destinazione. Ma non ho trovato alcun modo per eseguire il debug di proprietà su obiettivi Qt5. – Antwane

risposta

11

Qt5 non si basa più su un file di modulo CMake per trovare l'installazione Qt5, ma fornisce il proprio file di configurazione CMake, che configura le librerie Qt5 come target CMake importati. Per ottenere il percorso effettivo per il file di libreria del modulo Qt, interrogare la proprietà LOCATION del target del modulo CMake o la sua specifica versione di configurazione variante LOCATION_<Config>, ad esempio:

find_package(Qt5Core) 
get_target_property(QtCore_location_Release Qt5::Core LOCATION_Release) 

find_package(Qt5Widgets) 
get_target_property(QtWidgets_location_Release Qt5::Widgets LOCATION_Release) 

Questa strategia probabilmente vale anche per i plugin Qt, a condizione di sapere il nome del target CMake del plug-in (non l'ho verificato).

Vedere anche Qt5 CMake manual.

+0

Hai ragione, ma non ho trovato la giusta proprietà di destinazione impostata nei file Qt5XXXConfig [Version] .cmake, e non ho trovato macro che faccia lo stesso trucco di [questo] (http: // stackoverflow. it/a/9328525/424459) ma per le proprietà. – Antwane

+0

Collegamento interrotto a Qt5 Manuale CMake – Joakim

+0

@Joakim collegamento corretto – sakra

0

Sulla risposta di steveire, questo è come si dovrebbe ottenere i percorsi assoluti ai QSqlite e QJpeg plugin:

find_package(Qt5Gui) 
find_package(Qt5Sql) 

get_target_property(qsqlite_loc Qt5::QSQLiteDriverPlugin LOCATION_Release) 
message("QSqlite DLL: ${qsqlite_loc}") 

get_target_property(qjpeg_loc Qt5::QJpegPlugin LOCATION_Release) 
message("QJpeg DLL: ${qjpeg_loc}") 
+0

La risposta non è corretta. Leggi LOCATION not LOCATION_Release. – steveire

+0

Ho iniziato con LOCATION ma l'ho modificato perché la domanda originale era solo alla ricerca di plugin di rilascio. Potresti semplicemente lasciare che CMake gestisca la configurazione. – axelstudios

Problemi correlati