2015-07-01 15 views
5

W Qt 5 CMake manual stwierdza, że ​​qt5_use_modules makro jest nieaktualne:Co używać zamiast `qt5_use_modules`?

To makro jest przestarzała. Zamiast tego użyj target_link_libraries z IMPORTED targetami.

... Ale qt5_use_modules nie więcej niż po prostu określić bibliotek link: określa ona zawierać katalogów, niezbędne flagi kompilacji i więcej (zobacz pełny opis w dokumentacji związanej powyżej).

Zakładając, że zmienna QTMODULES zawiera listę modułów Qt, które powinny być użyte w projekcie, jaki jest "zalecany" sposób na zastąpienie poniższej "przestarzałej" linii CMake?

qt5_use_modules(${myProjectName} ${QTMODULES}) 

Następujące nie działa, przede wszystkim dlatego, że nie dodawać żadnych Qt zawierać ścieżki:

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

robi zmienną potrzebę bycia ręcznie powtórzyć skończy, tak że include_directories można nazwać dla każdego QTMODULES indywidualna nazwa modułu? Wydaje się to dużym krokiem wstecz od qt5_use_modules, który jest prosty i "po prostu działa". Czy czegoś brakuje?

Odpowiedz

6

Komunikat o użyciu IMPORTOWANYCH celów faktycznie odnosi się do wygenerowanych celów, które zapewniają moduły CMT Qt5, a nie do ustawiania właściwości IMPORTED na makrze target_link_libraries. Na przykład coś takiego:

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

zadba o dodanie wszystkich niezbędnych zawierać ścieżki, ścieżki łącza i bibliotek pozwalających na stosowanie modułów Qt5Core i Qt5Widgets.

+0

To nadal wydaje się wymagać oddzielenia każdej nazwy od zmiennej zawierającej listę modułów, których chciałbym użyć i dołączając 'Qt5 ::' do każdego z nich. Czy istnieje jakiś szczególny powód, dla którego jest to lepsze niż po prostu użycie 'qt5_use_modules'? –

+0

To * jest * interesujące, ale możesz pobrać 'target_link_libraries', aby dodać ścieżki włączania, itp. –

+0

Zależnie od formatu listy, możesz być w stanie zrobić na nim wyrażenie regularne lub powtórzyć listę, aby zbudować nowa zmienna we właściwym formacie ... – Zrax

Powiązane problemy