Я написал приложение на Qt C ++ и хочу развернуть его в Windows, OSX и Linux. Проблема в том, что он работает только на машинах, на которых установлен Qt.
Как мне заставить его работать на компьютерах без Qt? Нужно ли устанавливать его с настройкой приложения или чем-то еще? Я не понимаю всю вещь связывания.
Есть хорошие инструменты для подготовки заявки к распространению. это macdeployqt
для OSX и windeployqt
для Windows. Они копируют все зависимости в папку приложения, поэтому вы можете просто скопировать эту папку на другую машину. Для Linux вам нужно создать пакет. Это специфично для разных версий Linux. Узнайте больше о развертывании Вот
В Windows рекомендуется распространять файлы DLL Qt вместе с вашим приложением. Просто поместите их в ту же папку, что и ваш исполняемый файл в установочных файлах.
Под Linux вы можете использовать систему пакетов (см. RPM или deb пакет)
Для Windows вам просто необходимо включить файлы .ddl в исполняемый файл (и почему бы не сжать его в установщик (см. Easysetup tool)
Я не могу говорить за Windows
но Linux
В системах есть система управления пакетами, которая проверяет наличие необходимых зависимостей, поэтому система управления пакетами в процессе установки решает все эти проблемы. Вам просто нужно создать установочный пакет для каждого дистрибутива, который вы хотите поддерживать, хотя многие дистрибутивы примут один и тот же пакет из-за сходства.
Увидеть Создание RPM
Также: Упаковка Debian
Это две популярные системы пакетов, используемые Linux
распределение ..
Для Windows ответы Пьера и Ypnos в порядке. Я бы добавил, чтобы изменить «поощряется» в должен так как это единственный способ избежать ада длл. Недостатком использования установщика является то, что пользователю, устанавливающему ваше приложение, необходимы права администратора. Достаточно просто заархивировать весь каталог приложения и предоставить пользователям этот zip-файл, чтобы запустить его на любом клиентском компьютере Windows.
Для Linux смотрите мой ответ на другой вопрос Stackoverflow. Решение, которое я даю, работает в основном на любом дистрибутиве Linux. Вы копируете все свои зависимости в каталог приложения и запускаете свое приложение, запустив сценарий оболочки, который сначала устанавливает LD_LIBRARY_PATH. Если у вас есть этот сценарий, который также создает файл рабочего стола Linux, ваши пользователи могут дважды щелкнуть этот файл рабочего стола. Запуск вашего приложения будет прозрачным для вашего пользователя. Многие основные приложения с графическим интерфейсом для Linux (например, Google Chrome) запускаются из файла рабочего стола. Обход сценария необходим, поскольку файл рабочего стола содержит каталог приложения в жестком коде, и вы не можете предсказать, где ваши пользователи хотят развернуть ваше приложение. Использование менеджеров пакетов не так просто. Кроме того, есть порядка двадцати различных менеджеров пакетов для Linux.
Для OSX вы можете попробовать использовать утилиту Qt macdeployqt. У нас всегда были проблемы с этой утилитой. Мы делаем это сами с помощью скрипта qmake. Вы говорите Qt Creator сделать app_bundle. Я описал где-нибудь еще как сделать цифровую подпись в приложении OSX Qt. Часть подписи требует, чтобы приложение было автономным. Вы можете прочитать эту часть моего ответа. Если вы отделите сценарий развертывания от основного профессионального файла, вы можете использовать этот сценарий для всех своих приложений OSX.