Oratio introductoria (Intro):
Program który się skompilował na maszynie na której jest zainstalowane środowisko Qt,
uruchamia się bezproblemowo poza środowiskiem Qt.
Na innych maszynach, gdzie nie ma zainstalowanego środowiska Qt, program domaga się brakujących bibliotek. Dołączyłem odpowiednie biblioteki DLL bezpośrednio do katalogu, w którym znajduje się aplikacja, modyfikując CMakeLists.txt dodałem:
set(Qt_DLLs
${Qt5Core_DLL}
${Qt5Gui_DLL}
${Qt5Widgets_DLL}
)
# oczywiście musiałem podać pełną ścieżkę do brakujących bibliotek D
# Kopiowanie plików DLL do folderu z aplikacją
foreach(dll ${Qt_DLLs}) ...
Program zbudował się z Success 'em, a tu niespodzianka
double click -> cannot run executable code
qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
This application failed to start because no Qt platform plugin could be
initialized. Reinstalling the application may fix this problem.
Rozwiązaniem okazało się skopiowanie całego katalogu / folderu "platforms" z plikami w nim zawartymi do folderu / katalogu w którym znajduje się plik wykonywalny .exe
Teraz zrodziły się pytania:
-
Czy też napotyka -cie/-liście takie przeszkody, czy może budujecie tylko w środowisku Qt, lub korzystacie z narzędzia "windeployqt" ?
-
Czy Qt ma statyczne linkowanie bibliotek? Czy Qt pozwala na wbudowanie wszystkich potrzebnych plików *.dll w plik wykonywalny .exe ? Osobiście nie wiem jak się do tego zabrać, może znacie lub korzystaliście z jakiegoś FAQ / Tutorial dostępnego na .net ?
-
"kwestia licencyjna". Czy mam pełną swobodę w zakresie rozpowszechniania swojej aplikacji, w tym plików DLL, które są częścią Qt. Używam Qt na licencji LGPL. Jak sobie radzicie ?
Jakie wyzwania napotakliście w procesie dystrybucji i jak je pokonaliście ?
Uważam, że wasza perspektywa i doświadczenie w tej dziedzinie mogłaby mnie wesprzeć i będzie bardzo przydatna. Dziękuję za podzielenie się doświadczeniem i spostrzeżeniami, które są dla mnie niezwykle wartościowe i będę mógł z nich skorzystać w podjęciu decyzji, czy dalej poświęcać czas na naukę Qt, czy poszukać innego framework'a umożliwiającego tworzenie interfejsów graficznych GUI.