2015-07-01 21 views
5

Le Qt 5 CMake manual afferma che la macro qt5_use_modules è deprecato:Cosa usare al posto di `qt5_use_modules`?

Questa macro è obsoleta. Utilizza invece target_link_libraries con gli obiettivi IMPORTATI.

... Ma qt5_use_modules non si limita a specificare librerie di collegamento: specifica includono directory, flag di compilazione necessarie, e più (vedere la descrizione completa nella documentazione linkato sopra).

Supponendo, quindi, che la variabile QTMODULES contenga un elenco di moduli Qt da utilizzare per un progetto, qual è il modo "consigliato" per sostituire la seguente riga "deprecata" di CMake?

qt5_use_modules(${myProjectName} ${QTMODULES}) 

La seguente non funziona, in primo luogo perché non aggiunge alcuna Qt includono percorsi:

target_link_libraries(${myProjectName} IMPORTED ${QTMODULES}) 

fa la variabile necessità QTMODULES di essere manualmente iterato sopra, in modo che include_directories può essere chiamato per ogni nome del modulo individuale? Questo sembra un importante passo indietro da qt5_use_modules, che è semplice e "funziona". Mi sto perdendo qualcosa?

risposta

6

Il messaggio sull'utilizzo di obiettivi IMPORTATI si riferisce effettivamente ai target generati che i moduli CMake di Qt5 forniscono per te, non che tu debba impostare la proprietà IMPORTED sulla macro target_link_libraries. Ad esempio, qualcosa come:

target_link_libraries(${myProjectName} Qt5::Core Qt5::Widgets) 

si prenderà cura di aggiungere tutto il necessario percorsi di inclusione, i percorsi di collegamento, e le librerie per l'utilizzo dei moduli Qt5Core e Qt5Widgets.

+0

Sembra che sia ancora necessario separare ciascun nome dalla variabile contenente l'elenco di moduli che vorrei utilizzare e aggiungendo 'Qt5 ::' a ciascuno. C'è qualche ragione particolare per cui è preferibile usare semplicemente 'qt5_use_modules'? –

+0

Questo * è * interessante, però, che puoi ottenere 'target_link_libraries' per aggiungere percorsi di inclusione, ecc. –

+0

A seconda del formato della lista, potresti essere in grado di fare qualche regex su di essa, o scorrere l'elenco per costruire una nuova variabile nel formato corretto ... – Zrax

Problemi correlati