QT DEPLOY
1) Для Windows
В качестве примера я использую произвольные названия папок, но из названий должно быть понятно что к чему.
Создаем папку D:\Deploy
Нашимаем сочетание клавиш Win, ищем в установленых программах в меню QT Creator что-то вроде Qt 5.15.2 (MinGW 8.1.0 64-bit)
Запускаем, вводим в появившемся окошке
cd D:\Deploy
Далее заходим в D:\QT_Samples\madCalc\Release
Копируем из нее в D:\Deploy файл программы, в моем случае madCalc.exe
Затем в окошке cmd пишем
windeployqt madCalc.exe --quick
В итоге, в папке D:\Deploy появится куча файлов, включая файлы переводов.
Если переводы вам не нужны, тогда можно ввести ту же команду, но с дополнительным ключом:
windeployqt madCalc.exe --no-translations
2) Для Linux
Итак, начнем с того, что скачаем саму программу, которая будет скидывать необходимые библиотеки в папку с вашим приложением. Предложу 2 варианта: с моего сайта и с GitHub. Скачиваем файл linuxdeployqt-x86_64.AppImage.
Затем сделаем файл исполняемым и скопируем его в папку с программами. Конечно, это делается под root.
chmod +x linuxdeployqt-x86_64.AppImage
mv ~/Загрузки/linuxdeployqt-x86_64.AppImage /usr/local/bin/linuxdeployqt
Проверим, получилось или нет:
linuxdeployqt --version
Ответ должен быть таким:
linuxdeployqt (commit aeafcd2), build 13 built on 2022-01-28 22:37:07 UTC
Теперь пропишем переменные окружения.
sudo nano ~/.bashrc
Записав там буквально следующее:
#add QT ENV export PATH=/home/madmentat/Qt/5.15.2/gcc_64/bin:$PATH export LD_LIBRARY_PATH=/home/madmentat/Qt/5.15.2/gcc_64/lib:$LD_LIBRARY_PATH export QT_PLUGIN_PATH=/home/madmentat/Qt/5.15.2/gcc_64/plugins:$QT_PLUGIN_PATH export QML2_IMPORT_PATH=/home/madmentat/Qt/5.15.2/gcc_64/qml:$QML2_IMPORT_PATH
Обновим bashrc внашей сессии:
source ~/.bashrc
В моем случае linuxdeployqt ругался, дескать, не прописаны пути к qmake. Я не шибко умный, поэтому сделал как было написано в первой же статье на эту тему. Точнее, решение нашлось где-то на StuckOverflow. Просто тупо установил этот qmake:
sudo apt install qt5-qmake
Теоретически, можно было бы где-то что-то там прописать вроде как с этими переменными окружения, описанными выше, но... Чего не хватало, так это поебать себе попусту мозги! Ну и наконец, столкнулся с такой проблемой, что моя ОС слишком крутая для linuxdeployqt. Поэтому пришлось использовать клю -unsupported-allow-new-glibc. Но это на шаг позже. Сначала, как и в случае с Windows, нам нужно взять нашу Qt программку из папки Release и скопировать в какую-нибудь отдельную директорию. А когда вы справитесь с этой задачей, то... Открываем ее в терминале.
cd /home/madmentat/SimplePadDeploy
И теперь выполняем финальную сборку:
linuxdeployqt SimplePad -unsupported-allow-new-glibc
При попытке запустить программу на другом компьютере, скорее всего, вы увидете следующее сообщение:
Дело в том, что сначала надо дать права на выполнение файла:
sudo chmod +x SimplePad
Теперь можно запускать:
./SimplePad
Но можно сделать вообще красиво.
ln ~/SimplePad
/usr/local/bin/simplepad
Таким образом приложение можно будет запустить из консоли про помощи команды
simplepad
Ее же можно прописать в ярлык.
sudo nano /home/madmentat/.local/share/applications/SimplePad.desktop
[Desktop Entry] Type=Application Name=SimplePad GenericName=SimplePad Comment=My own pad with black-jack and whores Exec=simplepad Icon=/home/madmentat/SimplePad/simplePad.png Terminal=false Categories=GNOME;GTK;Utility;TextEditor; Keywords=Text;Editor;Plaintext;Write;Simple;SimplePad;
В итоге ваша программа запускается в системах, где не установлен Qt Creator. Пробовал на разных системах. Везде, где x11 - все ок. Где wayland - происходит какая-то херня.
Часто решается следующей командой:
apt install libxcb-xinerama0 -y
Думаю, эту шнягу надо обязательно подтягивать вместе с вашим приложением при помощи инсталятора, каким бы он в итоге ни был - будь то полноценный deb-пакет или простенький bash-скрипт. Я часто пользуюсь кастомными CUBIC-сборками, там можно зарание установить все что вам может потребоваться.